如何将对oncomplete事件的支持添加到rich:comboBox

时间:2013-09-13 12:51:38

标签: jsf combobox richfaces jsf-1.2

我需要编写一个comboBox,它在change事件和调用上调用一个支持bean方法。处理完这个方法后,我需要显示一个弹出窗口。复杂性在于我需要显示valueChangeListener的popup oncomplete事件。但是rich:comboBox不支持oncomplete事件。我试着把代码写成:

    <rich:comboBox value="#{myBean.myObj.name}" 
    defaultLabel="Please Select" status="defaultStatus"
    valueChangeListener="#{myBean.validateNewValue}"
    oncomplete="if(#{myBean.showPopup}) #{rich:component('popUpPanel')}.show(); return false;" >
        <f:selectItems value="#{myBean.nameList}" />
        <a4j:support event="onchange" ajaxSingle="true" reRender="errTable,popUpPanel" />
        <a4j:support event="oncomplete" ajaxSingle="true" reRender="errTable,popUpPanel" />
</rich:comboBox>

但是由于comboBox不支持oncomplete事件,因此不可能。谁能帮助我找出在这种情况下可以做些什么?或者是否有任何解决方法可以将对oncomplete事件的支持添加到comboBox?

1 个答案:

答案 0 :(得分:3)

oncomplete属性位于<a4j:support>,而不是输入组件。只需将它移到那里并摆脱永远不会被解雇的<a4j:support event="oncomplete">

<rich:comboBox value="#{myBean.myObj.name}" 
    defaultLabel="Please Select" status="defaultStatus"
    valueChangeListener="#{myBean.validateNewValue}">
    <f:selectItems value="#{myBean.nameList}" />
    <a4j:support event="onchange" ajaxSingle="true" reRender="errTable,popUpPanel"
        oncomplete="if(#{myBean.showPopup}) #{rich:component('popUpPanel')}.show();" />
</rich:comboBox>