簡體   English   中英

<form:option>默認值

[英]<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM