【发布时间】:2014-08-03 10:33:18
【问题描述】:
我在处理 PrimeFaces 5.0 和具有“绑定”的 panelGroup 时遇到了一些麻烦。我知道,“绑定”很糟糕,但我正在使用一个遗留系统,相信我,如果没有“绑定”,真的很难让它正确。
所以,当我点击mi链接时,“绑定”属性的getter在“动作”之前被调用,然后动作被调用,最后是“更新”。但是,该组件未正确更新。
即使我让它在绑定的 getter 之前运行“动作”,并且 getter 返回正确的东西,这个特定的组件也不会更新。
我有更多没有绑定的组件已正确更新,但不是带有“绑定”的组件。
更新:
这是其余的代码。 flag 以“false”值开头。
页面总是打印“只读”。
Somepage.xhtml
<h:form id="frm">
<p:commandLink value="#{messages.Guardar}" id="bt_Guardar" action="#{myBean.flagFalse}" update="someid" />
<p:commandLink value="#{messages.Editar}" id="bt_Editar" action="#{myBean.flagTrue}" update="someid" />
<h:panelGroup id="someid" layout="block">
<h:panelGroup id="panelCamposTD" layout="block" binding="#{myBean.someStuff}" ></h:panelGroup>
</h:panelGroup>
</h:form>
还有 myBean,它是一个 SessionScoped bean(因为它来自遗留系统)
@ManagedBean(name="myBean")
@SessionScoped
public class MyBean implements Serializable{
private static final long serialVersionUID = 7628440827777833854L;
private boolean flag = false;
public void flagFalse(){
flag = false;
}
public void flagTrue(){
flag = true;
}
public HtmlPanelGroup getSomeStuff(){
HtmlPanelGroup pg = new HtmlPanelGroup();
HtmlOutputText t = new HtmlOutputText();
if (flag){
t.setValue("EDITED");
}else{
t.setValue("READ ONLY");
}
pg.getChildren().add(t);
return pg;
}
public void setSomeStuff(HtmlPanelGroup pg){
return;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
}
【问题讨论】:
-
如果不检查完整代码就无法发表评论,但我仍然认为您还需要更新 tabView 组件。
-
我已经尝试更新整个表单(包括 tabView),但也没有用。我会尝试专门更新 tabView...
-
我刚刚用其余代码编辑了我的问题...我只是尝试过这种方式,但对我不起作用。
标签: jsf-2 primefaces binding