编辑后的值未反映在托管bean中

时间:2015-07-06 12:57:08

标签: jsf richfaces managed-bean ajax4jsf

我正在尝试编辑jsf数据表中填充的值(比如Name)。 jsf编辑值表单的片段如下。

<h:column>
<f:facet name="header">
<h:outputLabel value="Name"></h:outputLabel>
</f:facet>
<h:inputText 
value="#{maintenancedisplay.carrierMaintenanceResult.name}" > 
</h:inputText>
</h:column>

<a4j:region>
<a4j:commandButton value="Save"
onclick="#{rich:component('ajexLoad')}.show();"
oncomplete="#{rich:component('ajexLoad')}.hide();"
title="Save Details"
action="#{maintenancedisplay.saveChanges}"
reRender="growlGrp,modelpanelGroup1" immediate="true">
</a4j:commandButton>
</a4j:region>

但是点击save按钮,旧值将返回托管bean而不是编辑后的值。

我尝试添加binding attribute,如下所示。但它仍然没有用。

<h:column>
<f:facet name="header">
<h:outputLabel value="name"></h:outputLabel>
</f:facet>
<h:inputText 
value="#{maintenancedisplay.carrierMaintenanceResult.name}" binding="#{maintenancedisplay.name}"> 
</h:inputText>
</h:column>

添加绑定属性后,更改了setter方法,如下所示:

public void setname(HtmlInputText  name) {
        this.name = name;
        System.out.println("name:" + name.getValue());
    }

在控制台日志中,我得到旧值而不是更新值。

请指出我在这里做的错误。

感谢您的建议!

1 个答案:

答案 0 :(得分:0)

当从jsf中删除<a4j:region>周围的附加<a4j:commandButton>标记时,问题中提到的问题就解决了。

更新后的代码段是

<a4j:commandButton value="Save"
onclick="#{rich:component('ajexLoad')}.show();"
oncomplete="#{rich:component('ajexLoad')}.hide();"
title="Save Details"
action="#{maintenancedisplay.saveChanges}"
reRender="growlGrp,modelpanelGroup1" >
</a4j:commandButton>

感谢BalusC提供的见解和建议。