【问题标题】:Usage of Spring options tagSpring选项标签的使用
【发布时间】:2012-07-14 10:36:38
【问题描述】:

我想知道options tag 在 Spring 的表单命名空间中做了什么。我不明白 itemValue 属性如何与 docs 中提到的映射键相关。 比如说我在控制器中有以下方法:

@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,但仍然一切正常。那么我在这里缺少什么?

【问题讨论】:

    标签: spring spring-mvc


    【解决方案1】:

    您链接到的文档说:

    或者,您可以指定项目的地图,在这种情况下,地图 键被解释为选项值,映射值对应于 选项标签。

    因此,标签将地图的键显示为值,并将其值显示为标签。

    【讨论】:

      【解决方案2】:

      默认情况下,选项值为map key,标签为map valuemap value 是属性编辑器将启动以显示right name 的右对象。如果属性编辑器不可用,比如说键,那么它将使用toString() 来显示值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-08
        相关资源
        最近更新 更多