ユーザーが列からデータを編集できるようにするJSPページがあり、フォームが送信されるとデータベース内のそれぞれのテーブルを更新します。この表の行数は可変です。私は、JSPページに次のコードスニペット(のはブロックAという名前を付けてみましょう)が編集可能な情報フィールドについてはRichfaces:dataTable内のinputTextのa4jサポート(action、actionListener)
:
<h:inputText value="#{myBackingBean.theFieldValue}" >
<a4j:support event="onchange" actionListener="#{myBackingBean.theActionListener}" action="#{myBackingBean.theAction}"/>
</h:inputText>
次のコードスニペットを(のはブロックBという名前を付けましょう)されます
public String theAction() {
String outcome = null;
System.out.println("the action method was invoked");
return outcome;
}
public void theActionListener(ActionEvent actionEvent) {
System.out.println("the action listener method was invoked");
}
これらのメソッドが呼び出され、コンソール出力に出力されると、わかります。
私の問題がある:
<h:form id="myForm">
(...)
here I put Block A
(...)
</h:form>
ブロックBが問題なく起動され: Iは(形態で単一 inputTextコンポーネント)は、以下のブロック内ブロックAを置く場合。しかし、代わりに、ブロックAをrich:dataTableコンポーネント内に入れて、各行のinputText値をデータベースに格納するために必要に応じて(複数のinputTextコンポーネントを)入力します(ここでは、および/またはのactionListener法):この場合、
<h:form id="myForm">
<rich:dataTable id="myDataTable" value="#{myBackingBean.myObjectList}" var="item" binding="#{myBackingBean.myObjectHtmlDataTable}" rendered="#{!empty myBackingBean.myObjectList}" rows="20">
(...)
<rich:column>
here I put Block A
</rich:column>
(...)
</rich:dataTable>
</h:form>
は、ブロックBは到達しません。私はJSF 1.2、およびRichFacesの3.3.3で働いている
、すべての必要な豆とナビゲーションルールが正しく設定されています。すべての必要なゲッターとセッターはそれぞれのクラスに入っています。
私のコードを正しく動作させるためのアドバイスをいただけますか?前もって感謝します。