【发布时间】:2015-07-06 12:57:08
【问题描述】:
我正在尝试编辑填充在 jsf 数据表中的值(比如名称)。 jsf编辑值形式的sn-p如下。
<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());
}
在控制台日志中,我得到的是旧值而不是更新值。
请指出我在这里犯的错误。
感谢您的建议!
【问题讨论】:
-
binding从来都不是这类问题的有效解决方案。摆脱它。至于您的具体问题,您究竟为什么使用immediate="true"?您使用的是 JSF 1.x 左右吗? -
@BalusC 它的 Jsf 1.2。这是我使用的默认属性值。如果我错了,请纠正我
-
为什么要指定
immediate属性?如果您不知道原因,请将其删除。 -
@BalusC 尝试删除
immediate属性。但同样的问题也存在。 -
好。现在可以将其排除在可能的原因之外。下一步是
<a4j:region>。你觉得它到底是做什么的?
标签: jsf richfaces managed-bean ajax4jsf