Как создать гиперссылку facelet с переменными данными в качестве параметра? - PullRequest
2 голосов
/ 16 февраля 2010

У меня есть две страницы facelet: Customers.xhtml (со списком клиентов) и customer.xhtml для подробного просмотра только одного клиента. Я использую компонент h: dataTable внутри Customers.xhtml:

<h:dataTable var="customer" value="#{customerBackingBean.customers}">...</h:dataTable>

Теперь я хочу создать гиперссылку для каждого клиента в таблице. Гиперссылка должна перейти к customer.xhtml. У каждого клиента есть свойство primaryKey, которое должно сообщать customer.xhtml, что клиент должен отображаться.

Как мне это сделать? Как это работает, если я использую два разных бэк-бина для каждой страницы лицевой страницы?

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2010
<h:commandLink action="customer.xhtml" ..>
    <f:setPropertyActionListener 
         target="#{customerBackingBean.currentCustomer}" 
         value="#{customer}" />
</h:commandLink>
  • затем создайте свойство currentCustomer в компоненте (с помощью метода get и set)
  • ссылка #{customerBackingBean.currentCustomer} в customer.xhtml.

Просто будьте осторожны с областями действия - вам может придется использовать область сеанса, если вы используете перенаправление.

0 голосов
/ 16 февраля 2010

Или с обычной гиперссылкой, которая создает запрос GET.

<h:outputLink value="customer.jsf">
    <f:param name="id" value="#{customer.id}" />
    <h:outputText value="#{customer.name}" />
</h:outputLink>

JSF поддерживает POST запросов, но вы все равно можете использовать GET, если хотите - это зависит от ваших потребностей и от того, должна ли страница быть добавленной в закладки. Затем вам нужно получить идентификатор текущего клиента из URL при отображении страницы клиента.

См. Как создать запрос GET с параметрами, используя JSF и правила навигации?

...