如何使用Spring MVC“form”标签而不是“输入”标签?

时间:2012-06-12 12:37:38

标签: spring jsp spring-mvc

我有什么:

我有一个通用 JSP页面,在我的应用程序中用于显示某些实体。我感兴趣的代码是这样的:

<form:form modelAttribute="object"/>
    <core:forEach items="${sections}" var="section" varStatus="itemStat">
        <core:forEach items="${section.fields}" var="fieldDef">
            <form:input path="${fieldDef.fieldName}"/>                                        
        </core:forEach>
    </core:forEach>
<form:form>

对于每个部分,以及该部分中的每个字段,我都有一个输入,其路径为 fieldName ,这是我想要从每个字段中显示的内容。

我想要的是什么:

我希望输入不是简单的文本,而是标签。

我尝试了什么:

我最确定我可以用<form:label>以某种方式做到这一点,但我无法真正做到这一点。制作<form:label path="${fieldDef.fieldName}" />只是告诉浏览器我需要哪个字段标签,但是没有从中获取实际值。

我也尝试了类似${object.fieldDef.fieldName}的内容,但为了实现这一点,我必须首先分析${fieldDef.fieldName}的值,它会给我列的名称,然后执行一个${object.column},但是列是变量我无法以任何方式使其工作。

替代:

另一种方法是将输入设置为禁用并删除CSS的边框,但这将是一种肮脏的方式,从我看到它对于IE不同的版本也是棘手的。我相信我可以直接处理它。


我对<form:input path="...">在输入中输入与该路径相对应的内容(对于其他表单元素也是如此)感到有点兴趣,但是使用标签它的工作方式不同。

所以,我想要的基本上很简单,但我还没找到办法。如果有人能够发光,那就太好了。提前谢谢!

3 个答案:

答案 0 :(得分:3)

您可以查看spring绑定标记。我以前没有尝试过使用它,但这可能对你有用,代替输入标签

<spring:bind path="fieldDef.fieldName">
 ${status.value}
</spring:bind>

参考:http://static.springsource.org/spring/docs/1.1.5/taglib/tag/BindTag.html

答案 1 :(得分:2)

而不是

<form:input path="${fieldDef.fieldName}"/>

使用

<c:out value="${fieldDef.fieldName}"/>

它会显示任何值而不是创建输入字段。希望这对你有所帮助。欢呼声。

答案 2 :(得分:2)

使用弹簧形式选项卡,一个选项是使用

&lt; form:input disabled =“true” path =“$ {fieldDef.fieldName}”/&gt;

为了进一步使它看起来不像输入,您可以使用CSS根据您的喜好设置样式。

您可以使用的一些CSS样式:

background-color:#EEEEEE; border:0px solid;

更新:  你可以查看spring绑定标签。我以前没有尝试过使用它,但这可能对你有用,代替输入标签

<spring:bind path="fieldDef.fieldName">
     ${status.value}
</spring:bind>