在单个视图中切换面板还是重定向到其他页面?

时间:2014-10-07 08:21:19

标签: jsf-2 web primefaces

我正在编写一个应用程序(不是网站),其中北面板保持不变,菜单的西面板和中心面板。西面板和中心面板可以改变。

在概念方面,最好是在单个视图和切换面板上工作,还是应该创建多个页面?

例如: 解决方案1:中心面板显示汽车图像,我在西面板上选择一个汽车品牌,因此我将西面板与另一个菜单(品牌的车型)切换,并切换中心面板上的品牌徽标图像

解决方案2:中心面板显示汽车图像,我在西面板上选择一个汽车品牌,因此我重定向到另一个页面,左侧菜单上的品牌汽车型号和中心面板上的图像品牌标志。

谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您使用解决方案2并应用JSF Templating。通过应用此方法,您的页面易于扩展和重用。

这是我使用p:layoutui:composition

的示例

layout.xhtml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>Layout-menu</title>
    </h:head>
    <h:body>
        <p:layout>
            <p:layoutUnit position="west" 
                          resizable="true" 
                          size="250" 
                          minSize="40" 
                          maxSize="400">
                <h:form>
                    <p:menu>
                        <p:submenu label="Navigations">
                            <p:menuitem value="input" 
                                        outcome="inputText" 
                                        icon="ui-icon-star"/>
                            <p:menuitem value="dropdown" 
                                        outcome="selectOneMenu" 
                                        icon="ui-icon-star"/>
                        </p:submenu>
                    </p:menu>
                </h:form>
            </p:layoutUnit>

            <p:layoutUnit position="center">
                <ui:insert name="source" />
            </p:layoutUnit>
        </p:layout>
    </h:body>
</html>

inputText.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="layout.xhtml">
    <ui:define name="source">
        <h:form>
            inputText
        </h:form>
    </ui:define>

</ui:composition>

selectOneMenu.xhtml

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="layout.xhtml">
    <ui:define name="source">
        <h:form>
            selectOneMenu
        </h:form>
    </ui:define>

</ui:composition>

您可以在layout.xhtml页面上运行test,如http://host:port/project/layout.xhtml

您可以从其他网站(例如JSF 2 Templating With Facelets ExampleUsing Facelets Templates等)查看有关模板化的详细信息。