如何填充表单:选择并选择默认值?

时间:2013-06-21 08:04:49

标签: spring jsp spring-mvc jsp-tags

我有一个编辑用户表单,其中包含文本字段(用户名,姓氏.. )和一组国家/地区。我对这个选择有问题,因为我不知道填充它的更好方法。我已尝试使用 jquery 成功填充,但我无法通过 commandName 选择默认值。

<form:form method="POST" commandName="user" action="registerUser.html">
<form:errors path="*" cssClass="errorblock" element="div" />
    <spring:message code="app.user.username"/><form:input path="username" /><form:errors path="username" cssClass="error" /><br/>
    <spring:message code="app.user.firstname"/> <form:input type="text" path="firstName" /> <form:errors path="firstName" cssClass="error"/><br/>
    <spring:message code="app.user.password"/> <form:input type="password" path="password" /><form:errors path="password" cssClass="error"/><br/>
    <spring:message code="app.user.repassword"/> <form:input type="password" path="confirmPassword" /><form:errors path="confirmPassword" cssClass="error"/><br/>
    <spring:message code="app.user.email"/> <form:input type="text" path="email" /><form:errors path="email" cssClass="error"/><br/>
    <spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/>
    <input type="submit" value="Enviar" />
</form:form>

我看一下这个tutorial,所以我尝试了一个地图,但我不知道如何将数据返回到jsp中可访问,因为在本教程中使用的是SimpleFormController但是我不想为每个表单编写SimpleFormController。这是我的控制器返回表单的视图,我有另一个来捕获提交。

@RequestMapping(method=RequestMethod.GET, value="/editUserForm")
 public String recordUserRequestHandler(ModelMap model) throws Exception {
    model.addAttribute("user", new User());
    Map<String, Map<String, String>> referenceData = new HashMap<String, Map<String, String>>();
    Map<String, String> country = new LinkedHashMap<String, String>();
    country.put("US", "United Stated");
    country.put("CHINA", "China");
    country.put("SG", "Singapore");
    country.put("MY", "Malaysia");
    referenceData.put("countryList", country);
    return "EditUserForm";
 }

是否可以将referenceData传递给要通过以下形式访问的jsp:select?

<spring:message code="app.user.country"/> <form:select path="isoCode" items="${countryList}"/><form:errors path="isoCode" cssClass="error"/><br/>

1 个答案:

答案 0 :(得分:2)

此外,您不需要使用hashmap进行选择。我个人使用简单的List with beans来保存我的select选项。

public class ListOption { private String id; 私有字符串名称;

public ListOption(String id, String name) {
    this.id = id;
    this.name = name;
}

public ListOption() {
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

控制器中的

List<ListOption> selectOptions = new List<ListOption>();
// add Your options 
selectOptions.add(new ListOption("id","value");

然后将isoCode对象放入具有所需(选定)值的模型中,然后spring将设置为将值标记为已选择。

在你的jsp中

 <form:select path="isoCode" items="${countryList}" itemValue="id" itemLabel="name"/>