primeFaces 5.2 selectOneMenu valueChangeListener为什么事件获取itemLabel而不是itemValue?

时间:2016-12-17 11:14:55

标签: primefaces jsf-2 selectonemenu selectedvalue

我遇到了一个非常有趣的问题:当我尝试使用valueChangeListener的valueChangeEvent来访问selectOneMenu选择的值时。我有itemLabel而不是itemValue。

jsf snappet:

<p:selectOneMenu id="position" value="#{employmentBean.currentEmployment.positionId}" required="true" effect="fold" editable="true"
                 requiredMessage="Please select an available option." hideNoSelectionOption="true" immediate="true" valueChangeListener="#{employmentControlBean.handlepositionIdSelected}">
   <p:ajax update="@form" />
   <f:selectItem itemLabel="Select Position to Create Employment." itemValue="" />
   <f:selectItems value="#{positionBean.vacantPositionMap.entrySet()}" var="entry" itemLabel="#{entry.value}" itemValue="#{entry.key}"/>
</p:selectOneMenu>

我的vacantPositionMap是

Map<String,String> 

样式键/值对,键是位置Id,值是位置名称。

我的支持bean:

@Named(value = "employmentControlBean")
@SessionScoped
public class EmploymentControlBean(){
    public void handlepositionIdSelected(ValueChangeEvent event){
    ........
    String positionId = (String) event.getNewValue();
    positionBean.setCurrentPosition((Position) positionBean.getPositionCache().get(positionId));
    employmentBean.getCurrentEmployment().setPositionId(positionId);
  }
}

从snappet上面你可以看到。我正在尝试在valueChangeEvent上获取selectOneMenu选定值。

使用ValueChangeEvent支持bean方法,我想通过使用ValueChangeEvent将JSF的itemValue传递给支持bean。

这是我在html中使用firebug发现的:

enter image description here

从上面的图片你可以看到,primeFaces正确渲染html,但是当我试图访问选定的值时,我得到了#34;总统&#34;。这不是我的预期,我期望得到&#34; POSTN20161215xxxxxx&#34;。

我的问题是:为什么ValueChangeEvent传递itemLabel而不是itemValue?我怎样才能得到正确的价值?

请指教!!

0 个答案:

没有答案