如何在URL / customers上显示URL / customers和详细信息页面上的母版页?id = 4

时间:2014-08-17 13:49:58

标签: jsf jsf-2 facelets

考虑这个JSP网站示例。它允许以主/细节方式浏览客户。即,当用户提供链接" / customers"然后显示主视图。当用户提供链接" / customers?id = 4"然后显示特定的详细信息视图。从技术上讲,这是通过注册链接" / customers"在web.xml中并将其映射到充当MVC控制器的ClientsController.java servlet。它基本上1)检查是否" id"属性是否设置2)相应地设置HttpServletRequest属性(客户的完整列表或特定客户的详细信息以及3)使用getRequestDispatcher()机制适当地转发到master.jsp或details.jsp页面。现在如何通过保持相同的url方式和单独的主要和详细信息Facelets页面将这个东西转换为JSF2?

1 个答案:

答案 0 :(得分:1)

关于取消网址中的扩展程序,请转到此问答:Customize FacesServlet <url-pattern> to get rid of .xhtml extension

至于主人和详细信息视图取决于请求参数,只需使用<f:viewParam>将请求参数设置(并转换)为bean属性,然后使用rendered属性根据是否有条件地呈现所需内容bean属性为空。

<f:metadata>
    <f:viewParam name="id" value="#{bean.customer}" />
<f:metadata>
<ui:fragment rendered="#{empty bean.customer}">
    <ui:include src="/WEB-INF/includes/customer-master.xhtml" /> 
</ui:fragment>
<ui:fragment rendered="#{not empty bean.customer}">
    <ui:include src="/WEB-INF/includes/customer-detail.xhtml" /> 
</ui:fragment>

为了在回发中生存,请确保#{bean}@ViewScoped

另见: