options tag
Springのフォーム名前空間で何が行われるのか知りたいです。ドキュメントに記載されているように、itemValue属性がマップキーにどのように関連しているかわかりません。たとえば、コントローラーに次のメソッドがあるとします。
@ModelAttribute("rights")
public Map<ADMIN_RIGHTS, String> populateRights(){
Map<ADMIN_RIGHTS, String> rights = new LinkedHashMap<ADMIN_RIGHTS, String>();
rights.put(ADMIN_RIGHTS.ADMIN, "administrator");
rights.put(ADMIN_RIGHTS.COMP,"company");
rights.put(ADMIN_RIGHTS.EMP,"Employee");
return rights;
}
jspは次のとおりです。
<form:select path="right" >
<form:options items="${rights}"/>
</form:select>
そして、propertyEditorクラスは次のとおりです。
public class RightsPropertyEditor extends PropertyEditorSupport {
@Override
public String getAsText() {
Right right = (Right) getValue();
if (right != null) {
return right.getName();
}
return super.getAsText();
}
@Override
public void setAsText(String rightStr) throws IllegalArgumentException {
if (rightStr != null && rightStr.equals("ADMIN")){
rightStr = "Adminstrator credential";
}
else if(rightStr != null && rightStr.equals("COMP")){
rightStr = "Computer credential";
}
else if(rightStr != null && rightStr.equals("EMP")){
rightStr = "Employee credential";
}
setValue(new Right(rightStr));
}
jspでは、itemValueとitemLabelを指定しませんが、それでもすべてが機能します。それで、私がここで欠けているのは何ですか?