Назначить уникальный идентификатор клиента каждой строке <rich: dataTable />? - PullRequest
0 голосов
/ 19 мая 2010

Я относительно новичок в работе с пользовательским интерфейсом в Seam, поэтому я надеюсь, что есть что-то простое, что я могу заменить тремя экземплярами UNIQUE_ID в следующем примере.

Цель состоит в том, чтобы иметь <rich:dataTable />, в котором каждая строка имеет возможность показать / скрыть <rich:modalPanel /> с более подробной информацией о конкретном экземпляре объекта.

<rich:dataTable var="object" value="#{bean.myObject}">
  <rich:column>
    <h:outputText value="#{object.summary}" />
  </rich:column>

  <rich:column>
    <a onclick="Richfaces.showModalPanel('UNIQUE_ID');" href="#">Show Details in ModalPanel</a>
    <a4j:form>
      <rich:modalPanel id="UNIQUE_ID" >
        <a onclick="Richfaces.hideModalPanel('UNIQUE_ID');" href="#">Hide This ModalPanel</a>
        <h:outputText value="#{object.details}" />
      </rich:modalPanel>
    </a4j:form>
  </rich:column>
</rich:dataTable>

Если бы у меня была только одна пара link / modalPanel, это, очевидно, было бы тривиально, но я не знаю, что делать в рамках итерации <rich:dataTable />. Кроме того, в случае, если это еще более усложнит ситуацию, на странице также будет много <rich:dataTable />, каждый из которых реализует это поведение.

1 Ответ

1 голос
/ 19 мая 2010

Посмотрите на тег <rich:componentControl />.

Используйте attachTo для «привязки» события к отображению модальной панели, которую вы хотите открыть, используя атрибут for.

Ex:

<h:outputLink id="modalPanelLink" value="#">Show Details
    <rich:componentControl attachTo="modalPanelLink" for="modalPanelId" event="onclick" operation="show" />
</h:outputLink>
...