【发布时间】:2011-11-02 12:57:15
【问题描述】:
JFS1.2 + Richfaces 3.3
情况如下:
JSP 页面有条件地呈现一个或另一个 panelGroup。
在每个 panelGroup 中都有几个 setter 和一个命令按钮。 两个 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),但是这种设计对我来说很糟糕......
【问题讨论】:
-
我认为这是
JSF 1.2中范围不足的经典示例。所有大于request的东西都必须是session...JSF 2.0更好:) -
顺便说一句,我认为您的解决方案已经足够好了。
-
好吧,我很乐意使用 tomahawk.. 不幸的是,它在我的项目中被标记为已弃用...缺少范围...确实,视图很适合,可悲的是,该选项(升级到 JSF2)也不能考虑(项目要求)。什么会让我高兴 - 是否有可能在没有额外会话 bean 持有决策值的情况下解决问题?
-
这里有一些
JSF大师,例如BalusC。他可以肯定地告诉你。
标签: java jsf richfaces jsf-1.2