基于数字值显示字符串

Display String based in number value

我正在使用此 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:selectOneMenu 设置的 int 值将字符串显示为 h:outputText

h:outputText

一种方法是在后端 bean 中添加一些方法:

  • 创建一个方法,其中 returns 一个 Map<Integer, String> 的值显示在 selectOneMenu
  • 初始化 selectItem 值的方法是 returns 来自上一个 Map
  • List<SelectItem>
  • 创建一个方法,其中 returns 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)}"/>

希望对您有所帮助