gpt4 book ai didi

java - 如何刷新 JSF h :panelGroup?

转载 作者:行者123 更新时间:2023-12-02 07:32:10 25 4
gpt4 key购买 nike

我在开发中使用 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:form ),这将重新评估第二个面板中的 rendered="#{magicBean.show_X == false}" 。我还建议将后者更改为 rendered="#{magicBean.show_Y}" 以提高可读性...

关于java - 如何刷新 JSF h :panelGroup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767149/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com