我正在使用 Primefaces 组件框架和 Java Server Faces Web 应用程序开发。过去两天我遇到了这个问题。当我单击将呈现两个的统计输入开关组件,p:commandButton
然后单击将呈现 5 个的开关计划输入时,p:commandButton
尽管更新呈现效果很好,但这些按钮未设置名为 back bean 的变量的操作。请看下面两张图
不起作用的按钮
我假设有条件渲染的组件没有连接回 bean。可能是 ajax 渲染的组件无法识别整个应用程序。我f:setPropertyActionListener
用于设置支持动作 bean 变量。
<p:tab title="#{lang['top_menu_statistic_planning']}">
<p:ribbonGroup>
<h:form>
<div class="statistic-planning-switcher-parts">
<p:inputSwitch onLabel="Statistic" offLabel="Planning"
value="#{selectBooleanView.value2}">
<p:ajax listener="#{selectBooleanView.addMessage}"
update=":mainReportSubViewsRenderID :mainViewsRenderID" />
</p:inputSwitch>
</div>
</h:form>
</p:ribbonGroup>
<p:ribbonGroup label="">
<h:panelGroup id="mainReportSubViewsRenderID">
<h:panelGroup
rendered="#{selectBooleanView.addMessage() == 'Checked'}">
<p:commandButton value="Import-1" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomout" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_statistic.import"
target="#{hometabmanager.action}" />
</p:commandButton>
<p:commandButton value="Export" update=":mainViewsRenderID"
icon="fa fa-asterisk" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_statistic.export"
target="#{hometabmanager.action}" />
</p:commandButton>
</h:panelGroup>
<h:panelGroup
rendered="#{selectBooleanView.addMessage() == 'Unchecked'}">
<p:commandButton value="Button-1" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomin" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_planning.section1"
target="#{hometabmanager.action}" />
</p:commandButton>
<p:commandButton value="Button-2" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomin" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_planning.section2"
target="#{hometabmanager.action}" />
</p:commandButton>
<p:commandButton value="Button-3" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomout" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_planning.section3"
target="#{hometabmanager.action}" />
</p:commandButton>
<p:commandButton value="Button-4" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomin" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_planning.section4"
target="#{hometabmanager.action}" />
</p:commandButton>
<p:commandButton value="Button-5" update=":mainViewsRenderID"
icon="ui-ribbonicon-zoomout" styleClass="ui-ribbon-bigbutton">
<f:setPropertyActionListener value="report_planning.section5"
target="#{hometabmanager.action}" />
</p:commandButton>
</h:panelGroup>
</h:panelGroup>
</p:ribbonGroup>
</p:tab>
---------上面的代码呈现在下面的panelgrid ----------------------------------
<h:panelGroup
rendered="#{hometabmanager.action == 'report_planning.section1'}">
<ui:include src="/views/report/report_section1.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_planning.section2'}">
<ui:include src="/views/report/report_section2.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_planning.section3'}">
<ui:include src="/views/report/report_section3.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_planning.section4'}">
<ui:include src="/views/report/report_section4.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_planning.section5'}">
<ui:include src="/views/report/report_section5.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_statistic.import' and selectBooleanView.subSectionPageBlock == 'block-statistic'}">
<ui:include src="/views/report/report_import2.xhtml" />
</h:panelGroup>
<h:panelGroup
rendered="#{hometabmanager.action == 'report_statistic.export' and selectBooleanView.subSectionPageBlock == 'block-statistic'}">
<ui:include src="/views/report/report_export.xhtml" />
</h:panelGroup>