当表单验证失败时,如何从<p:selectoneradio>选项重新呈现<p:panel>?</p:selectoneradio> </p:panel>

时间:2014-07-25 12:05:47

标签: ajax jsf primefaces

渲染在页面初始加载期间正常工作,但是一旦提交了表单并且某些组件失败,验证重新渲染不会触发,则面板不再显示和隐藏,并且页面必须再次刷新。我还是jsf的新人。

示例代码

    <p:selectOneRadio id="accommodationOptions" value="#{travelRequestMBean.accommodationOptions}">  
                        <f:selectItem itemLabel="#{field['accord3Radio2']}" itemValue="2" />  
                        <f:selectItem itemLabel="#{field['accord3Radio1']}" itemValue="1" />
                        <f:ajax render="panelMoreAccommodation2"/> 
    </p:selectOneRadio>

    <p:panel id="panelMoreAccommodation2" widgetVar="panelMoreAccommodation2" 
            visible="#{travelRequestMBean.accommodationOptions == 1}" closable="true" toggleable="true">
                    <p:graphicImage url="/images/hotel-noun_project_4398.svg" alt="#{field['accord3Label2']}" height="24px" />
                    <h:outputText value="#{field['accord3Label2']}" />
    </p:panel>

此外,我尝试使用支持bean中的布尔属性,并在selectoneradio上使用ajax事件,结果仍然相同,面板不执行任何操作。

2 个答案:

答案 0 :(得分:0)

我无法看到您验证输入的位置。但是看看http://www.primefaces.org/showcase/ui/csv/basic.xhtml

的组合
update=":panelMoreAccommodation2"

而不是可见的使用渲染。

答案 1 :(得分:0)

最后进行了一些调整,问题是目标面板上的这个属性

closable="true"

删除此属性后,即使在验证失败的提交后,ajax更新仍然有效。