【发布时间】:2019-05-07 23:02:31
【问题描述】:
我在 JSF 中的 SelectOneMenu 有一个问题。
我有一个与枚举列表绑定的 SelectOneMenu 组件,给 selectOneMenu 的值是这样的数组元素:
<h:selectOneMenu id="menuOperatorOne" value="#{operandExpression.operators[0]}">
<f:selectItem itemValue="#{null}" itemLabel=" -- Select "></f:selectItem>
<f:selectItems value="#{currentBean.listComparaisonOperators}"/>
<f:ajax render="expressionForm"/>
</h:selectOneMenu>
问题是只返回一个字符串(枚举的名称为字符串,而不是对象本身)。
如果我在 managedBean 中将 selectOneMenu 的值设置为我的 Enum 类型的简单变量,我知道代码运行良好,例如:
<h:selectOneMenu id="menuOperatorOne" value="#{currentBean.myEnumObject}">
所以我的意思是我的枚举都很好,而不是问题的根源。
如何在数组元素中检索对象枚举?
感谢您的帮助!
重复命题后编辑:
假设我们有两个 bean 变量,例如 ;
private EnumType singleEnumObject;
private List<EnumType> listEnumObjects;
我们在 JSf 中有两个 selectOneMenu 之类的(listComparaisonOperators 包含我的 Enum 值);
<h:selectOneMenu id="menuOperatorOne" value="#{currentBean.singleEnumObject}">
<f:selectItems value="#{currentBean.listComparaisonOperators}"/>
</h:selectOneMenu>
<h:selectOneMenu id="menuOperatorTwo" value="#{currentBean.listEnumObjects[0]}">
<f:selectItems value="#{currentBean.listComparaisonOperators}"/>
</h:selectOneMenu>
如您所见,它们完全相同,只是第二个链接到元素数组作为值。但是他们每个人在 selectItems 中都有 Enums,并且处理方式完全相同。
第一个selectOneMenu会在“singleEnumObject”中返回Enum Object,这很好。
第二个 selectOneMenu 将在 "listEnumObjects[0]" 中返回 String(枚举名称为字符串)。我不应该像第一个 SelectOneMenu 一样得到我的 Enum 对象吗?
有人知道我在这里做错了什么吗?有人可以提供他使用 SelectOneMenu 值(而不是单个变量)中的数组元素检索 Enum 对象的示例吗?
谢谢。
【问题讨论】:
-
是的,如果分配给 SelectOneMenu 的值是“简单”变量,我没有问题返回对象枚举。我的问题只是当值是数组的元素时。
标签: arrays enums jsf-2.2 selectonemenu