[英]<form:option> default value
我在jsp頁面中有以下spring-mvc代碼
<form:select path="role" id="idRole" >
<form:option value="">Select a message role</form:option>
<form:options items="${roles}" />
</form:select>
在Java類中,這里是模型屬性:
@ModelAttribute("role")
public Role[] roles() {
return Role.values();
}
值為:A,B,C,D。
默認情況下,我們需要在選項表單中包含“C”值!
當用戶轉到此頁面時,他會在選項中看到預定義的C值,當然如果他想要更改它 - 他會更改為A,B等。我該怎么辦?
您可以在顯示表單之前將ModelAttribute中“role”的值設置為“C”。 當Spring MVC呈現頁面時,它將選擇適當的值。
如果假設您的模型是OBJABC
class OBJABC {
private String abc;
private ENUMABC enumABC;
...Getters and Setters.....
}
它有enum ENUMABC
public enum ENUMABC
{
A("A"),
B("B"),
C("C");
private String value;
private ENUMABC (String val)
{
value = val;
}
public String getValue()
{
return value;
}
}
因此,如果您在加載表單時設置傳遞模型
你可以寫
OBJABC obj = new OBJABC ();
obj.setEnumABC(ENUMABC.B);
model.addAttribute("modelAttribute",obj );
在控制器中
在jsp上,您應該將相同的鍵設置為模型屬性
@ CodeChimp的回答是正確的。 您的模型應包含用戶在角色列表中的選擇。 但是列表和選擇是分開的。
包含該選項的模型可能如下所示:
public class RoleModel {
private Role role;
public void setRole(Role role) {
this.role = role;
}
public Role getRole() {
return this.role;
}
}
所以在你的控制器中你有:
@ModelAttribute("roleModel")
public RoleModel createModel() {
return new RoleModel();
}
和:
@ModelAttribute("roles")
public Role[] getRoles() {
return Role.values();
}
因此,JSP中<form:select>
標記上的path="role"
映射到RoleModel
的role屬性。 而選擇選項的角色列表來自roles
模型屬性。
您還需要注冊一個自定義PropertyEditor,它知道如何將字符串'A','B','C','D'轉換為Role枚舉實例。 有一個帖子在這里描述的自定義屬性編輯器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.