Что такое метка 'для' id для selectBooleanCheckbox - PullRequest
5 голосов
/ 07 сентября 2011

Как ссылаться на каждый отдельный флажок в outputLabel, чтобы при нажатии на ярлык элемента он фактически был таким же, как если бы я нажимал на флажок?

<rich:dataGrid value="#{all}" var="item" columns="3">
    <h:outputLabel value="#{item.name}" for="what_here?" />
    <h:selectBooleanCheckbox value="#{item.selectedForLaterUse}" id="item#{item.id}" />
</rich:dataGrid>

Возможность, которая приходит в голову, конечно,

  for="item#{item.id}"

но, поскольку идентификаторы jsf являются относительными, это не сработает, верно?

Существует также один вариант использования selectManyCheckbox, но, похоже, он не дает возможности использовать столбцы.

1 Ответ

8 голосов
/ 07 сентября 2011

Вам не нужно это делать.JSF делает это для вас.Просто укажите фиксированный идентификатор, если он находится в той же области.

<rich:dataGrid value="#{all}" var="item" columns="3">
    <h:outputLabel value="#{item.name}" for="item" />
    <h:selectBooleanCheckbox value="#{item.selectedForLaterUse}" id="item" />
</rich:dataGrid>

JSF сгенерирует соответствующий HTML соответственно.Откройте страницу в браузере, щелкните правой кнопкой мыши и сделайте Просмотр источника , чтобы увидеть ее самостоятельно.Сгенерированные идентификаторы HTML-элементов в данном конкретном случае состоят из всех родительских NamingContainer компонентов и индекса текущего элемента.

Вот пример сгенерированного вывода при условии, что вы даетевсе компоненты NamingContainer имеют фиксированный идентификатор, например <h:form id="form"> и <rich:dataGrid id="grid"> (в противном случае JSF будет автоматически генерировать идентификаторы, такие как j_idt1 и т. д., что также будет работать отлично, но не сразу для чтения):

<table id="form:grid" class="rf-dg">
  <tbody id="form:grid:dgb" class="rf-dg-body">
    <tr class="rf-dg-r">
      <td class="rf-dg-c">
        <label for="form:grid:0:item">one</label>
        <input id="form:grid:0:item" type="checkbox" name="form:grid:0:item" />
      </td>
      <td class="rf-dg-c">
        <label for="form:grid:1:item">two</label>
        <input id="form:grid:1:item" type="checkbox" name="form:grid:1:item" />
      </td>
      <td class="rf-dg-c">
        <label for="form:grid:2:item">three</label>
        <input id="form:grid:2:item" type="checkbox" name="form:grid:2:item" />
      </td>
    </tr>
  </tbody>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...