キャンセル ボタンを使用して、データ テーブル内の入力テキスト フィールドをリセットしようとしています。私が抱えている問題は、キャンセルしようとして検証エラーが発生した場合、最初に検証を行い、エラーを見つけてエラーを出力し、再レンダリングする前にエラーを出力するため、キャンセルできないことです。
明白な解決策は、ボタンに "immediate=true" を設定することです。これにより問題が解消され、検証なしでキャンセルできますが、フィールド自体は元の値に設定されていません。これは、immediate が true に設定されているため、コンポーネント自体がバッキング Bean からデータを再取得しないためです。
これは、この記事で非常によく説明されています: http://wiki.apache.org/myfaces/ClearInputComponents
この記事には多くの解決策が示されていますが、どれも私にはうまくいきません。
- 同じページにとどまらなければならないので、ビューを変更することはできません。
- キャンセルした「行」だけをリセットしたいので、ページ上のすべての入力フィールドの値をリセットできません
コンポーネントを入力フィールドにバインドできないようです。これは、入力フィールド自体の「バインディング」属性が 'var' 変数を参照できないためです。たとえば、次の「バインディング」属性は不正であり、エラーが発生します。
<ice:dataTable id="poolSharesTbl" var="node" value="#{poolSharesManager.nodeModel}" ... <ice:column> <ice:inputText binding="#{node.inputTextBinding}" ...
これは、「var」がリクエスト スコープのみであることに関係している可能性があります。
とにかく、これを機能させる方法について誰かアイデアがありますか?