我正在通过读取数据库然后选择值进行进一步处理来构建下拉列表。问题出现在处理部分中。
下拉列表的ajax侦听器仅在 alternate 选择时触发,而不是在每个选择上触发。如果我第一次选择一个值,则不会触发侦听器。如果我第二次选择它再次触发。第三次,它再次没有触发等等。
<p:selectOneMenu id="selectedBPZero" value="#{selectCriteriaBean.selectedBPZero}" >
<f:selectItem itemValue="0" itemLabel="Select Option" />
<f:selectItem itemValue="1" itemLabel="Add New BP" />
<f:selectItems value="#{selectCriteriaBean.bpZeroList}"/>
<p:ajax listener="#{selectCriteriaBean.bpZeroListSelectActionByAjaxCall}" event="change" update="selectedBPOne,selectedBPOneTextInfo" process="@this"/>
</p:selectOneMenu>
监听方法如下
public void bpZeroListSelectActionByAjaxCall() {
setParentBusinessProcessId(0);
setSelectedBPOne(0);
setSelectedBPTwo(0);
setBPOneListRendered(false);
setBPTwoListRendered(false);
setModifyButtonBPZeroRendered(false);
setModifyButtonBPOneRendered(false);
setModifyButtonBPTwoRendered(false);
if (getSelectedBPZero() == 0) {
RedirectScreen.redirectToPage("/ALM/home.faces");
} else {
if (getSelectedBPZero() == 1) {
setAddBPLevelNumber(0);
addBP();
} else {
setBPOneListRendered(true);
setModifyButtonBPZeroRendered(true);
// Get BP List
bpLevelOneList = bpList(1,getSelectedBusinessProcessLevelZero());
RedirectScreen.redirectToPage("/ALM/home.faces");
}
}
}
我尝试将事件更改为valueChange
和click
,但它不起作用。我正在使用GlassFish设置Eclipse。
我在Rational Application Developer(RAD)中测试过的相同代码,它正在那里工作。
TIA