【问题标题】:JSF bookmarking problemJSF 书签问题
【发布时间】:2010-01-15 13:36:18
【问题描述】:

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

employees?id=<some id>

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

【问题讨论】:

    标签: jsf


    【解决方案1】:

    如果您还没有使用 JSF 2.0,那么您可以将 h:outputLink&lt;f:param&gt;#{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 了解更多信息和示例。

    【讨论】:

    • 您的博客看起来很棒,谢谢 :) 是的,您对@PostConstruct 的提示是正确的,我已经重新实现了这个注释(并在我的博客m-hewedy.blogspot.com/2010/01/… 中列出)但是这里有一个问题,什么如果我需要使用 h:outputlink 将员工对象放在会话范围内?
    • 只需将EmployeeManager 设为会话范围的bean。
    【解决方案2】:

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

    1. 使用 JSF 2(Java EE 6 的一部分)
    2. 如果您卡在 JSF 1.x 中,请使用 PrettyFaces

    如果可以切换到 Java EE 6 服务器,我强烈推荐选项 1。

    编辑:在 JSF 2 中添加了 2 个标签:&lt;h:link /&gt;&lt;h:button /&gt;。这些使用 GET 而不是 POST。另外,请查看&lt;f:viewparam /&gt;。除此之外,JSF 2 中还有许多其他精彩的补充。有关简要概述,请参阅this article

    【讨论】:

    • 那么,是不是用JSF2就可以解决这个问题了,恐怕切换到以后还是会遇到这个问题?
    • 您不一定需要 JSF2。这没有任何意义。
    • 您不需要 JSF 2。您可以修改视图处理程序以接受接受查询参数。然而,这是一种很老套的做法。您也可以使用输出链接。但是,这绕过了 JSF 导航。
    猜你喜欢
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多