考虑这个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?
答案 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
。