【发布时间】:2010-01-15 13:36:18
【问题描述】:
我有一个显示员工数据的 h:datatable。 我希望用户在单击员工姓名时导航到 URL 看起来像的新页面
employees?id=<some id>
我尝试将 JSP EL 与 JSF EL 结合起来,但没有出路。
【问题讨论】:
标签: jsf
我有一个显示员工数据的 h:datatable。 我希望用户在单击员工姓名时导航到 URL 看起来像的新页面
employees?id=<some id>
我尝试将 JSP EL 与 JSF EL 结合起来,但没有出路。
【问题讨论】:
标签: jsf
如果您还没有使用 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);
}
}
@PostConstuct 注释方法将在 bean 构造以及所有注入和托管属性设置之后调用。另请参阅this article 了解更多信息和示例。
【讨论】:
EmployeeManager 设为会话范围的bean。
我能想到两种可能的解决方案:
如果可以切换到 Java EE 6 服务器,我强烈推荐选项 1。
编辑:在 JSF 2 中添加了 2 个标签:<h:link /> 和 <h:button />。这些使用 GET 而不是 POST。另外,请查看<f:viewparam />。除此之外,JSF 2 中还有许多其他精彩的补充。有关简要概述,请参阅this article。
【讨论】: