gpt4 book ai didi

jsf - Primefaces valueChangeListener 或

转载 作者:行者123 更新时间:2023-12-02 01:01:20 25 4
gpt4 key购买 nike

我正在使用 Primefaces 3.4.2。

我的 JSF 页面中有以下内容

<p:selectOneMenu id="emp" value="#{mymb.emp.employeeName}" 
valueChangeListener="#{mymb.handleChange}"
required="true"
style="width: 150px;">
<f:selectItem noSelectionOption="true"
itemLabel="Please Select"/>
<f:selectItems value="#{mymb.employeeList}" var="emp"
itemLabel="#{emp.employeeName}"
itemValue="#{emp.employeeNumber}"/>
<p:ajax update="sublist"/>
</p:selectOneMenu>

在 ManagedBean 中

public void handleChange(ValueChangeEvent event){  
System.out.println("here "+event.getNewValue());
}

问题是valueChangeListener没有触发,即 handleChange方法没有被调用。我尝试了以下方法,但它也不起作用。

<p:ajax update="sublist"  listener="#{mymb.handleChange}" />  

单独的 JSF 页面:

<ui:composition template="/templates/layout.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<ui:define name="content">
<h:head>
</h:head>
<h:body>
<h:form id="form">
<p:panelGrid columns="6">
<h:outputLabel value="Employees" for="employees" />
<p:selectOneMenu id="employees"
value="#{mymb.employeesList}"
required="true">
<f:selectItems value="#{mymb.employeesList}" var="emp"
itemLabel="#{emp.employeeName}" />
<p:ajax listener="#{mymb.handleChange}" />
</p:selectOneMenu>
</p:panelGrid>
</h:form>
</h:body>
</ui:define>
</ui:composition>

最佳答案

如果您想使用valueChangeListener ,每次选择新选项时都需要提交表格。像这样的事情:

<p:selectOneMenu value="#{mymb.employee}" onchange="submit()"
valueChangeListener="#{mymb.handleChange}" >
<f:selectItems value="#{mymb.employeesList}" var="emp"
itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeID}" />
</p:selectOneMenu>

public void handleChange(ValueChangeEvent event){
System.out.println("New value: " + event.getNewValue());
}

或者,如果您想使用 <p:ajax> ,它应该看起来像这样:

<p:selectOneMenu value="#{mymb.employee}" >
<p:ajax listener="#{mymb.handleChange}" />
<f:selectItems value="#{mymb.employeesList}" var="emp"
itemLabel="#{emp.employeeName}" itemValue="#{emp.employeeID}" />
</p:selectOneMenu>

private String employeeID;

public void handleChange(){
System.out.println("New value: " + employee);
}

需要注意的一件事是,在您的示例代码中,我看到 value您的<p:selectOneMenu>的属性是 #{mymb.employeesList}value 相同的<f:selectItems>value您的<p:selectOneMenu>应该类似于我上面的例子,它指向单个员工,而不是员工列表。

关于jsf - Primefaces valueChangeListener 或 <p :ajax listener not firing for p:selectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14956261/

25 4 0

Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com