繁体   English   中英

如何刷新JSF h:panelGroup?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM