【问题标题】:Pre-populated <form:input> field (spring-form.tld tag library)预填充的 <form:input> 字段(spring-form.tld 标签库)
【发布时间】:2013-12-18 21:33:23
【问题描述】:
我的 jsp 页面中有一个 <form:form>,其中包含多个 <form:input> 字段(因此,字段是数据绑定的)。其中一些字段是由用户填充的,但有些字段不是等待用户输入某个值,而是需要预先填充从另一个 jsp 页面通过 spring 控制器发送到该页面的参数值。如何将该参数写入<form:input>,以便用户不必这样做?
【问题讨论】:
标签:
java
jsp
spring-mvc
spring-form
【解决方案1】:
如果我正确理解您的问题,您希望使用之前已提交的值预填充某些字段。
您需要了解的是,使用 Spring 表单标签库,Spring 期望您将命令对象放入模型中,并将该命令对象中的值绑定到表单字段。
如果你没有在模型中指定这个命令对象的键,taglib 会用键“command”来查找它。您可以使用表单标签上的 commandName 属性指定不同的名称,例如:
<form:form commandName="myModelObject">
Spring 现在会在模型中寻找一个名为 myModelObject 的对象来绑定表单标签。
然后您需要做的另一件事是在 Spring 表单的表单标签中,引用命令对象中的字段。因此,例如,假设您的命令对象有一个字段 firstName,您将有一个像这样的输入标签:
<form:input path="firstName" />
path 属性告诉该属性它应该与命令对象中的哪些字段绑定。
因此,您只需将命令对象放入模型中并预先填充适当的字段,相应的表单字段就会预先填充这些值。例如,如果您将一个名为 myModelObject 且具有字段 firstName 的对象放入模型中,则该对象中当前设置的 firstName 将预先填充该对象。