2013-06-21 162 views
0

我有一個編輯用戶表單,其中包含文本框(用戶名,姓氏..)和一些國家/地區。我遇到了這個選擇的問題,因爲我不知道填充它的更好方法。我試着用填充jquery成功,但我無法通過命令名稱選擇默認值。如何填充表單:選擇並選擇默認值?

<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/> 

回答

2

此外,您不需要使用hashmap進行選擇。就我個人而言,我使用簡單的List來包含我的選擇選項。

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對象與期望的(選擇的)值模型然後彈簧將管理作爲選擇標記的值。

在JSP

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

非常有趣的形式給出@Josef我會嘗試。我解決了它將地圖添加到模型數據。我要用解決方案編輯我自己的帖子,但我會接受你的解決方案是正確的,因爲你困擾着迴應我。謝謝 – mannuk

+0

歡迎您:-) –

+0

它很好,謝謝。在哪裏放置這些實用程序,如List選項?因爲我有其他人,比如我們添加json列表的根的方法。我想遵循良好的做法 – mannuk