2011-01-21 16 views
2

私はtomahawk selectOneRadioを使用してラジオボタンを広げようとしています。私のIDはこのように見えます要素IDを動的に参照する方法

<rich:dataTable id="carTable" value="#{cars}" var="car"> 
    <rich:column> 
     <s:decorate id="types" template="/layout/display-text.xhtml"> 
      <t:selectOneRadio id="models" value="#{car.model}" layout="spread"> 
       <f:selectItems value="#{models}" /> 
      </t:selectOneRadio> 
      <h:panelGrid columns="2"> 
       <a:repeat value="#{models}" rowKeyVar="index"> 
        <t:radio for="car:carTable:0:types:models" index="#{index}"></t:radio> 
       </a:repeat> 
      </h:panelGrid> --> 
     </s:decorate> 
    </rich:column> 
</rich:dataTable> 

要素を検査した後、私はidを参照しました。しかし、これは動作していません。ラジオボタンの反復ごとにidが変化するためです。トンでIDを参照する方法:ラジオ

+0

私はRichFaces/Seamをやっていませんが、 'for ="モデルの仕事だけではありませんか?それは彼らなしで働いていたでしょう。 – BalusC

答えて

1

documentation for t:radioは言う:

参照拡張selectOneRadioコンポーネントのIDを。この値は、標準のUIComponent.findComponent()検索アルゴリズムを使用して特定のコンポーネントに解決されます。私はa:repeatを推測している

はそう動作しません"models"を使用して、NamingContainerです。 t:selectOneRadioコンポーネントのclient identifierを使用できます。このような

何か:

<t:selectOneRadio id="models" value="#{car.model}" layout="spread" 
    binding="#{requestScope.modelComponent}"> 
    <f:selectItems value="#{models}" /> 
</t:selectOneRadio> 
<h:panelGrid columns="2"> 
    <a:repeat value="#{models}" rowKeyVar="index"> 
    <t:radio for="#{requestScope.modelComponent.clientId}" index="#{index}" /> 
    </a:repeat> 
</h:panelGrid> 

警告:これはキー "れるModelComponent" を使用して、要求のスコープマップにコンポーネントをバインドする

  1. 。あなたが何か他のものと衝突しないこれを確認する必要があり
  2. 解決modelComponent.clientIdは、JSF 2.0(JEE6)が必要ですか

上詳細はhere参照してください。古いバージョンで作業する。

関連する問題