Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF书签问题_Jsf - Fatal编程技术网

JSF书签问题

JSF书签问题,jsf,Jsf,我有一个显示员工数据的h:datatable。 我希望用户在单击员工姓名时导航到URL类似的新页面 employees?id=<some id> 员工身份证= 我尝试将jspel与jsfel结合起来,但没有出路 我可以想到两种可能的解决方案: 使用JSF2(JavaEE6的一部分) 如果您在JSF1.x中陷入困境,请使用 如果可以切换到JavaEE6服务器,我强烈推荐选项1 编辑:JSF2中添加了两个标记:和。这些使用GET而不是POST。另外,查看。除此之外,JSF2中还有许多

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

employees?id=<some id>
员工身份证=

我尝试将jspel与jsfel结合起来,但没有出路

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

  • 使用JSF2(JavaEE6的一部分)
  • 如果您在JSF1.x中陷入困境,请使用
  • 如果可以切换到JavaEE6服务器,我强烈推荐选项1


    编辑:JSF2中添加了两个标记:
    。这些使用GET而不是POST。另外,查看
    。除此之外,JSF2中还有许多其他精彩的添加。有关简要概述,请参见。

    如果您还没有使用JSF2.0,那么您可以将
    h:outputLink
    {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>
    
    基本
    com.example.EmployeeManager
    示例:

    <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>
    
    public class EmployeeManager {
        private Long id;
        private Employee employee;
    
        @PostConstruct
        public void init() {
            this.employee = employeeDAO.find(this.id);
        }
    }
    

    @PostConstuct
    带注释的方法将在bean构造以及所有注入和托管属性设置之后调用。另请参阅以获取更多信息和示例。

    那么,使用JSF2是否可以解决此问题,因为我担心在切换到仍然面临此问题之后?您不一定需要JSF2来解决此问题。这毫无意义。你不需要JSF2来实现这一点。您可以修改视图处理程序以接受查询参数。然而,这是一种令人讨厌的方法。您还可以使用输出链接。但是,这绕过了JSF导航。您的博客看起来很棒,谢谢:)是的,您对@PostConstruct的提示是正确的,我已经重新定义了这个注释(并在我的博客中列出了它),但这里有一个问题,如果我需要使用h:outputlink将employee对象放在会话范围内怎么办?只需将
    EmployeeManager
    设置为会话范围的bean。