3

アクションハンドラー内からフォームフィールドのIDを判別する必要があります。フィールドは含まれているファセットコンポーネントの一部であるため、フォームは異なります。

include.xhtml

<ui:component>
  <h:inputText id="contained_field"/>
  <h:commandButton actionListener="#{backingBean.update}" value="Submit"/>
</ui:component>

example_taining.xhtml

<h:form id="containing_form">
  <ui:include src="/included.xhtml"/>
</h:form>

update実行時にメソッド内のフォームのIDを確認するにはどうすればよいですか?または、さらに良いことに、入力フィールドのIDを直接入力します。

4

3 に答える 3

5

ボタンをバッキング Bean にバインドし、最も近いフォームが見つかるまで getParent() を使用します。

于 2008-09-23T19:25:15.643 に答える
0

update メソッドは actionListener 型であるため、次のように UI コンポーネントにアクセスできます。

public void update(javax.faces.event.ActionEvent ac) {
      javax.faces.component.UIComponent myCommand = ac.getComponent( );
      String id = myCommand.getId(); // get the id of the firing component

      ..... your code .........

}
于 2008-11-05T19:06:04.217 に答える
0

プログラム的には jsight の方法を使用します。要素の ID は (JSF に作成させない限り、ID に番号を付ける方法がわかりません) それを見ればわかります。h:form はネーミング コンテナーなので、別のネーミング コンテナーにラップされていない限り、ContainedForm:containedfield になります。「:」はデフォルトでネーミング セパレーターであり、JSF であり、ID は大まかにこのように作成されます。 , (parentNamingContainerId:)*componentId

于 2008-10-01T13:12:18.503 に答える