1

我正在通过读取数据库然后选择值进行进一步处理来构建一个下拉列表。问题出现在处理部分。

下拉列表的 ajax 侦听器仅在备用选择时触发,而不是在每个选择时触发。如果我第一次选择一个值,监听器不会触发。如果我第二次选择它会再次触发。第三次,它再次没有触发,依此类推。

<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");       
        }
    }
}

我尝试将事件更改为valueChangeand click,但它不起作用。我正在使用 GlassFish 设置 Eclipse。

我在 Rational Application Developer (RAD) 中测试的相同代码,它在那里工作。

TIA

4

0 回答 0