我在托管 bean 中有一个成员变量,该成员变量通过 getter 和 setter 绑定(bind)到 XHTML 中的组件。如果我在函数调用中设置成员变量,当触发该成员变量的getter时,该成员变量仍将保留旧值。我可以知道如何更新这个成员变量以便组件可以获得最新的更新值吗?
管理bean:
@ManagedBean(name = "myBean")
@SessionScoped
public class MyBean {
public boolean show = false;
/** getter and setter **/
public void theFunc() {
this.show = true;
}
}
XHTML 代码
<h:panelGroup id="Panel_1" rendered="#{myBean.show == true}">
...
Some rubbish here
...
</h:panelGroup>
<h:panelGroup id="Panel_2">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax event="action" render="Panel_1"/>
<h:outputText value="XX" />
</h:commandLink>
</h:panelGroup>
在此示例中,即使 theFunc()
已设置为 true,show
变量仍显示 false。
2012 年 10 月 6 日更新 我已经删除了commandButton并替换为commandLink,我认为在使用方面应该没问题。
最佳答案
如果您希望调用方法,请更改方法返回类型和名称。
改变这个
public void theFunc() {
this.show = true;
}
到此
public String doFunc() {
this.show = true;
return null;
}
否则此操作无法进行。
<h:commandLink action="#{myBean.doFunc}">
然后像这样更新面板的父级
<h:panelGroup id="parentPanelGroupId">
<h:panelGroup id="Panel_1" rendered="#{myBean.show}">
...
Some rubbish here
...
</h:panelGroup>
</h:panelGroup>
<h:panelGroup id="Panel_2">
<h:commandLink action="#{myBean.doFunc}">
<f:ajax render="parentPanelGroupId"/>
<h:outputText value="SHOW/HIDE PANEL 1" />
</h:commandLink>
</h:panelGroup>
注意:
使用
rendered="#{myBean.show}"
而不是
rendered="#{myBean.show == true}"
关于java - 如何更新托管bean的属性成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12732257/