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



我正在尝试编辑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());
    }

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

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

谢谢你的建议!

当从的jsf中移除<a4j:commandButton>周围的附加<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" >
</a4j:commandButton>

感谢BalusC的见解和建议。

相关内容

  • 没有找到相关文章

最新更新