JSF书签问题

时间:2010-01-15 13:36:18

标签: jsf

我有一个显示员工数据的h:datatable。 我希望用户在单击员工姓名时导航到新页面,该URL看起来像

employees?id=<some id>

我试图将JSP EL与JSF EL结合起来,但没有出路。

2 个答案:

答案 0 :(得分:2)

我能想到两种可能的解决方案:

  1. 使用JSF 2(Java EE 6的一部分)
  2. 如果您遇到JSF 1.x,请使用PrettyFaces
  3. 如果可以切换到Java EE 6服务器,我强烈建议使用选项编号1。

    修改:在JSF 2中添加了2个标记:<h:link /><h:button />。这些使用GET而不是POST。另外,请查看<f:viewparam />。除此之外,JSF 2中还有许多其他精彩内容。有关简要概述,请参阅this article

答案 1 :(得分:2)

如果您还没有使用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);
    }
}

{/ 1}}注释方法将在 bean构造之后调用以及所有注入和托管属性设置。另请参阅this article了解更多信息和示例。