Как динамически ссылаться на идентификатор элемента - PullRequest
2 голосов
/ 21 января 2011

Пытаюсь выкладывать переключатели с помощью томагавка selectOneRadio.Мой идентификатор выглядит так:

<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>

Я ссылался на идентификатор после проверки элемента.Но это не работает.Потому что для каждой итерации идентификатор кнопки радио меняется.Как передать идентификатор в т: радио

1 Ответ

1 голос
/ 23 января 2011

Документация для t: radio гласит:

Идентификатор ссылочного расширенного компонента selectOneRadio.Это значение разрешается для конкретного компонента с использованием стандартного UIComponent.findComponent () алгоритма поиска.

Я предполагаю, что a:repeat - это NamingContainer, поэтому, используя "models" не будет работать.Вы можете использовать идентификатор клиента компонента t:selectOneRadio.

Примерно так:

<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>

Предостережения:

  1. Thisпривязывает компонент к карте области запроса, используя ключ "modelComponent";вам нужно убедиться, что это не сталкивается с чем-то другим
  2. Для разрешения modelComponent.clientId требуется JSF 2.0 (JEE6) или выше

См. здесь для получения более подробной информации;работа со старыми версиями;и т.д.

...