0

JSF2の問題。フォームに非表示の編集領域があります。ユーザーが [編集] ボタンをクリックすると、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.

}

よろしくお願いします。

4

2 に答える 2

0

stringValue"" の場合は送信後に Bean をチェックインするだけで、その場合は null に設定し、表示可能なプロパティを に設定しますfalse

于 2012-10-11T17:19:34.273 に答える
0

action 、編集ボタンのクリック時に呼び出す Bean 関数。その中でstringValue変数をクリアします。

于 2012-10-11T17:22:29.200 に答える