どのように私は、JSFのデータテーブル内のselectOneMenuから値を得ることができますか?

StackOverflow https://stackoverflow.com/questions/988869

  •  13-09-2019
  •  | 
  •  

質問

Iは、各行が、このようにそれの内部selectOneMenuを有する、行の束とのJSFデータテーブルを有しています

    <h:form 
      <h:dataTable id="myTable"
        binding="#{myBean.dataTable}"
        value="#{myBean.dataTableRows}" var="row"
        first="0" rows="0" dir="LTR" frame="hsides" rules="all">

        <h:column>
          <f:facet name="header">
            <h:outputText value="Sample Name" />
          </f:facet>
          <h:outputText value="#{row.sampleName}" />
        </h:column>

        <h:column>
          <f:facet name="header">
            <h:outputText value="Role" />
          </f:facet>
          <h:selectOneMenu value="#{row.role}"
            id="roleInput">
            <f:selectItems value="#{myBean.allRoles}" />
          </h:selectOneMenu>
        </h:column>

      </h:dataTable>

      <h:commandButton value="Save" action="#{myBean.save}" />
    </h:form>

しかし、私は、保存方法の各行のうち、選択した役割を取得する方法を見つけ出すように見えることはできません。言い換えれば、私はそれぞれの行の値を保存したいです。私は、入力されたテキストボックスを保存する方法について説明し、この記事を見ます:

http://balusc.blogspot.com/2006/06 /using-datatables.html#EditableDatatableする

が、時間には適用されていないようです:selectOneMenuケース。誰もがこれを行う任意のコード例を持っていますか?

ありがとうございます。

役に立ちましたか?

解決

私はあなたのテーブルがあなたのBeanに結合している参照してください。あなたの豆では、getDataTable()メソッドを使用して、それをアクセスすることができます。 Javaのドキュメントは述べています:

public Object getRowData()

Return the data object representing the data for the currently selected row index, if any.

あなたのコードを実行するのであれば同様ます:

List<String> selectedRowData = (List<String>) getDataTable().getRowData()

あなたは、ユーザーが選択したすべてのフィールドにアクセスすることができます。私自身のプロジェクトとその作業でこれを使用してイム。唯一の違いは、イムではなくList<String>の自分の型にキャストされていること。

他のヒント

の形に明らかな誤りがありません - あなたのsaveメソッドが呼び出されていない場合は、<のhref = "http://java.sun.com/javaee/javaserverfaces/1.2_MR1/docs/tlddocs/を追加してみてくださいH / messages.html」のrel = 『nofollowをnoreferrer』>フォームへのメッセージのタグ問題の原因を追跡するのに役立ちます。あなたは、問題を再現し、使用しているJSFの実装とバージョンを述べるサンプルBeanを掲載場合は役立つだろう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top