Bean中的空字符串不会覆盖h:inputText中的先前值

时间:2012-10-11 17:11:53

标签: jsf-2 el

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" />&#160;&#160;&#160;&#160;<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;" />&#160;&#160;&#160;
                    <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.

}

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果stringValue为“”,请在提交后检查您的bean,如果是,请将其设置为null,将可见属性设置为false

答案 1 :(得分:0)

动作,您调用的bean函数单击编辑按钮。在里面清除stringValue变量。