我正在尝试编辑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的见解和建议。