0

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 などに変更します。どうすればよいですか?

4

3 に答える 3

0

モデルが 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 では、モデル属性と同じキーを設定する必要があります

于 2013-05-22T14:16:38.923 に答える
0

@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 のタグの はpath="role"、. 一方、選択オプションのロールのリストはモデル属性から取得されます。<form:select>RoleModelroles

また、文字列 'A'、'B'、'C'、'D' を Role 列挙型インスタンスに変換する方法を知っているカスタム PropertyEditor を登録する必要があります。カスタム プロパティ エディターについて説明している記事がここにあります。

于 2013-05-22T14:40:59.110 に答える