显示基于数值的字符串

时间:2016-05-23 08:43:22

标签: jsf selectonemenu

我使用此h:selectOneMenu将值设置为数据库。

<h:selectOneMenu id="role" value="#{profile.accountData.role}">
    <f:selectItem itemLabel="User" itemValue="0" />
    <f:selectItem itemLabel="Developer" itemValue="1" />
    <f:selectItem itemLabel="Sales" itemValue="2" />
    <f:selectItem itemLabel="Administrator" itemValue="3" />
    <f:selectItem itemLabel="Super user" itemValue="4" />
</h:selectOneMenu>

如何根据我使用h:outputText设置的int值将字符串显示到h:selectOneMenu

H:的outputText

1 个答案:

答案 0 :(得分:1)

这样做的一种方法是在后端bean中添加一些方法:

  • 创建一个返回Map<Integer, String>的方法,其中包含要在selectOneMenu
  • 中显示的值
  • 使用返回先前selectItem
  • 中的List<SelectItem>的方法初始化Map
  • 创建一个方法,该方法返回String以通过在地图中提取来从项目值(整数)中检索项目名称

初始化地图的方法

public Map<Integer, String> getMapOfItem() {
    Map<Integer, String> mapOfItem = new HashMap<>();

    // Initialize items
    mapOfItem.put(0, "User");
    mapOfItem.put(1, "Developer");
    mapOfItem.put(2, "Sales");
    mapOfItem.put(3, "Administrator");
    mapOfItem.put(4, "Super user");

    return mapOfItem;
}

初始化selectItem值的方法

public List<SelectItem> getLstOfItem() {
    List<SelectItem> lstOfItem =  new ArrayList<>();
    for (Map.Entry<Integer, String> entry : getMapOfItem().entrySet()) {
        lstOfItem.add(new SelectItem(entry.getKey(), entry.getValue()));
    }
    return lstOfItem;
}

int值转换为相应标签的方法

public String itemName(int val) {
    return getMapOfItem().get(val);
}

在你的JSF视图中,只需这样调用它(bean是你的后端bean)

<h:selectOneMenu id="role" value="#{profile.accountData.role}">
    <f:selectItems value="#{bean.lstOfItem}"/>
</h:selectOneMenu>

h:outputText

<h:outputText value="#{bean.itemName(profile.accountData.role)}"/>

希望它可以帮到你