Если вы не на JSF 2.0 еще, то вы можете просто использовать h:outputLink
в сочетании с <f:param>
, #{param}
и faces-config.xml
.
Базовый пример таблицы:
<h:dataTable value="#{bean.employees}" var="employee">
<h:column>
<h:outputLink value="employees.jsf">
<f:param name="id" value="#{employee.id}" />
<h:outputText value="View employee #{employee.name}" />
</h:outputLink>
</h:column>
</h:dataTable>
Основные faces-config.xml
пример:
<managed-bean>
<managed-bean-name>employeeManager</managed-bean-name>
<managed-bean-class>com.example.EmployeeManager</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>id</property-name>
<value>#{param.id}</value>
</managed-property>
</managed-bean>
Основные com.example.EmployeeManager
пример:
public class EmployeeManager {
private Long id;
private Employee employee;
@PostConstruct
public void init() {
this.employee = employeeDAO.find(this.id);
}
}
The @PostConstuct
аннотированных методов будет вызываться после того, как фасонная конструкция и все условия впрыска и управляемой собственности. Также см. this article для получения дополнительной информации и примеров.
Ваш блог отлично выглядит, спасибо :) Да, вы правы в подсказке @PostConstruct, я обновил эту заметку (и перечислил ее в своем блоге http://m-hewedy.blogspot.com/2010/01/ call-session-beans-on-jsf-managed.html) Но один вопрос здесь. Что, если мне нужно поместить объект employee в область сеанса с помощью h: outputlink? –
Просто сделайте 'EmployeeManager' сессионным компонентом. – BalusC