我的<p:selectOneMenu>
有一个<f:selectItems>
,在此<f:selectItems>
我设置了itemLabel
和itemValue
。 Item Value是一个Enum
对象,它只包含一个String,Label就是这些String。 <p:selectOneMenu>
的值是这些Enum
对象的集合。 selectOneMenu有valueChangeListener
,当它被调用时,它变成标签为“新值”而不是值。有谁知道如何解决这个问题?
<h:form>
<p:selectOneMenu id="changeSpracheMenu"
value="#{sessionManager.currentUser.sprache}"
label="#{messageManager.getMessage('USER')}"
valueChangeListener="#{sessionManager.updateSpracheForCurrenUser}"
converter="sprachConverter">
<f:selectItem itemLabel="#{messageManager.getMessage('LANGUAGE')}"
noSelectionOption="true" />
<f:selectItems value="#{sprachManager.allSprachen}" var="sprache"
itemLabel="#{messageManager.getMessage('LANGUAGE_'.concat(sprache.name))}"
itemValue="#{sprache}" />
<p:ajax event="change" update="@form" />
</p:selectOneMenu>
</h:form>
答案 0 :(得分:0)
您可以将selectItem的值发送到bean中,而不是使用value of valueChangeListener。
为此,你必须修改
<p:ajax event="change" update="@form" />
要:
<p:ajax event="change" listener="#{yourBean.yourMethod(sprache)}" update="@form" />
现在你的bean:
private yourObject sprache;
//getter/setter
public void yourMethod(yourObject typeSprache){
whatever xyz = typeSprache.getWhatEverYouWant();
}