[英]How to refresh JSF h:panelGroup?
我在开发中使用JSF 2.0,tomahawk和一些f:ajax
。 我正在尝试为我的JSF应用程序添加一些神奇的单词。 当您单击该单词时,它将更改为另一个单词,再次单击它将再次更改它。 为了更清楚,这是一个场景。 显示XX的原始单词,当点击XX时,XX将更改为YY。 单击YY时,将更改回XX。 你觉得这很神奇吗? :P
这就是我的成就。 我创建2 h:panelGroup
。 一个将包含一个XX字,另一个将包含YY字,如下所示:
<h:panelGroup id="Panel_X">
<h:outputText value="XX" />
</h:panelGroup>
<h:panelGroup id="Panel_Y">
<h:outputText value="YY" />
</h:panelGroup>
为了使其可单击,我使用commandLink。 从上面的代码修改成为:
<h:panelGroup id="Panel_X" rendered="#{magicBean.show_X == true}">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax event="action" render="Panel_Y"/>
<h:outputText value="XX" />
</h:commandLink>
</h:panelGroup>
<h:panelGroup id="Panel_Y" rendered="#{magicBean.show_X == false}">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax event="action" render="Panel_X"/>
<h:outputText value="YY" />
</h:commandLink>
</h:panelGroup>
这是支持bean:
@ManagedBean(name = "magicBean")
@SessionScoped
public class MagicWordBean {
public boolean show_X = true;
/** getter and setter of show_X **/
public String doFunc() {
showX = !showX;
return "";
}
}
我不确定我是否正确地做了但有一点我确信它不起作用。 最初加载页面时,它会显示XX字。 单击XX单词时,YY单词不显示,XX单词保留在那里。
这有什么线索吗?
我认为render="Panel_Y"
是你的问题:你正试图渲染一些首先没有在页面上呈现的东西。 尝试渲染父/容器(即包含两个面板的h:表单),它将在第二个面板中重新评估rendered="#{magicBean.show_X == false}"
。 为了便于阅读,我还建议将后者改为rendered="#{magicBean.show_Y}"
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.