JFS1.2 + Richfaces 3.3
情况如下:
JSP 页面有条件地呈现一个或另一个 panelGroup。
在每个 panelGroup 中有几个设置器和一个命令按钮。两个 panelGroups 中的每一个都使用自己的 bean 来设置和执行操作。
在页面顶部有 selectOneRadio 与(明显的)两个项目 - 条件渲染的相应两个选项。
页面渲染正确,切换器导致渲染适当的面板。案例是,命令按钮不调用动作。
我知道发生了什么——当我单击一个按钮调用动作时,dom 会重新生成,但决定显示特定面板的值不再存在。未重新创建按钮,未触发操作。
技术上:
<h:selectOneRadio value="#{reportType}">
<f:selectItem itemLabel="x" itemValue="x"/>
<f:selectItem itemLabel="y" itemValue="y"/>
<a4j:support event="onclick" reRender="xPanel, yPanel/>
</h:selectOneRadio>
<h:panelGrid id="xPanel "columns="2" rendered="#{reportType eq 'x'}">
<...some setters>
<... commandbutton>
</h:panelGrid>
<h:panelGrid id="yPanel "columns="2" rendered="#{reportType eq 'y'}">
<...some setters>
<... commandbutton>
</h:panelGrid>
问题是,如何设计页面以获得正确的渲染和动作?现在,我创建了额外的会话 bean 来保存切换值 (x|y),但是这种设计对我来说很糟糕......