JSF 2 问题。我的表单上有一个隐藏的编辑区域。当用户单击 Edit 按钮时,我将 bean 属性设置为 true 以显示该区域(这有点简化)并将另一个 bean 属性设置为正在编辑的值。这个变量被称为:
<h:inputText value="#{bean.stringValue}" />
当用户取消编辑时,我隐藏编辑区域。
假设用户想要编辑另一个项目,但这个项目的值是空字符串 ("")。使用相同的代码,将 stringValue 设置为 emptyString 并显示该区域。
但是,会显示上一次编辑的值,而不是空文本框。
如果不求助于 JavaScript,有没有办法让它工作?
编辑:以下是我可以接近 SSCCE 的地方。如您所见,我正在激活表格内的就地编辑。我也在使用 ICEfaces,但在这种情况下没什么特别的。
<table>
<tbody>
<ui:repeat var="cfi"
value="#{evDetailBean.completeEvent.listCompleteCashFlowItems}">
<ice:panelGroup rendered="#{!cfi.editThisOne}">
<tr>
<td>#{cfi.cfiName}</td>
<td>#{cfi.absOfAmount}</td>
<td>#{cfi.frequencyDescr}</td>
<td>#{cfi.cfiToFrom}</td>
<td>#{cfi.assetPoolName}</td>
<td style="text-align: center"><h:commandLink
actionListener="#{cfi.editCfiListener}" value="Edit" />    <h:commandLink
value="Delete" actionListener="#{cfi.deleteCfiListener}" />
</td>
</tr>
</ice:panelGroup>
<ice:panelGroup rendered="#{cfi.editThisOne}">
<tr>
<td><ice:inputText value="#{evDetailBean.newCFIName}"
style="width:118px;" partialSubmit="true" immediate="true" validator="#{evDetailBean.valNewCFIName}" /></td>
<td>xxx</td>
<td>xxx</td>
<td>xxx</td>
<td>xxx</td>
<td style="text-align: center;"><ice:commandButton
value="Save" immediate="true"
actionListener="#{evDetailBean.saveEditCfiListener}"
styleClass="plumvo-button"
style="float:left; vertical-align: middle;" />   
<ice:commandLink value="Cancel" style="vertical-align: middle;"
actionListener="#{cfi.cancelEditCfiListener}" /></td>
</tr>
</ice:panelGroup>
</ui:repeat>
</tbody>
这是 actionListener(部分):
public void editCfiListener(ActionEvent e) {
EvDetailBean evDetailBean = completeEvent.getEvDetailBean();
evDetailBean.setNewCFIName(this.getCfiName());
// initialize more fields
editThisOne = true; // This causes the row being edited to open up with modifiable fields.
}
在此先感谢您的帮助。