按条件呈现按钮、设计、调用操作



JFS1.2 + Richfaces 3.3

情况如下:

JSP页面有条件地呈现一个或另一个面板组。

在每个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),但这种设计对我来说很糟糕……

RichFaces 3.3提供了与战斧的<t:saveState>和JSF2 @ViewScoped基本相同的<a4j:keepAlive>标签。在视图中添加以下行:

<a4j:keepAlive beanName="#{bean}" />

只要您从操作(侦听器)方法返回nullvoid,这将使bean保持活动。

参见:

  • JSF 1.2:如何在同一视图的回发中保持请求作用域的托管bean活动?

相关内容

  • 没有找到相关文章

最新更新