java-其中哪一种是使用磁贴的更好方法

问题:我有两个具有相同结构的相同页面home.jsp和contact.jsp.它们仅在正文内容和标题上有所不同.我想使用tile框架创建一个Layout页面,并将代码重用于两个JSP.控制器框架尚未确定,可能是Spring MVC 3或Struts 2.

解决方案A:直接从控制器/动作类调用JSP文件/视图.

我在tile.xml中编写一个定义,例如:

<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
    <put-attribute name="body" value="" />
</definition>

现在在baseLayout.jsp中:

<html>
    <head><title><tiles:insertAttribute name="title"/></title></head>
    <body>
        <div class="wrapper">
            <div class="header"><tiles:insertAttribute name="header"/></div>
            <div class="body"><tiles:insertAttribute name="body"/></div>
        </div>
    </body>
</html>

现在在home.jsp中

<tiles:insertDefinition name="baseLayout">
    <tiles:putAttribute name="title">
        Title for home page
    </tiles:putAttribute>
    <tiles:putAttribute name="body">
        Content for home page
    </tiles:putAttribute>
</tiles:insertDefinition>

与contact.jsp类似:

<tiles:insertDefinition name="baseLayout">
    <tiles:putAttribute name="title">
        Title for contact page
    </tiles:putAttribute>
    <tiles:putAttribute name="body">
        Content for contact page
    </tiles:putAttribute>
</tiles:insertDefinition>

解决方案B:从cotrollers / action类中调用不同JSP文件的tile定义.这种方法需要为我要编写的每个JSP文件定义一个tile.因此共有3个tile定义(一个用于baseLayout,另外两个用于home和contact).

Tiles.xml:

<definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayout.jsp">
    <put-attribute name="title" value="" />
    <put-attribute name="header" value="/WEB-INF/jsp/includes/header.jsp"/>
    <put-attribute name="body" value="" />
</definition>

<definition name="home" extends="baseLayout">
    <put-attribute name="title" value="Title for home page" />
    <put-attribute name="header" value="/WEB-INF/jsp/home.jsp"/>
</definition>
<definition name="contact" extends="baseLayout">
    <put-attribute name="title" value="Title for contact page" />
    <put-attribute name="header" value="/WEB-INF/jsp/contact.jsp"/>
</definition>

baseLayout.jsp:与**解决方案A **相同

home.jsp:主页内容

contact.jsp:联系页面的内容

我想建议我应采用上述哪种方法.

解决方法:

解决方案B是实施的最佳方法,

>您将拥有单独的样式模板,您可以在以后将其重用,以供其他jsp使用,而不会像解决方案A那样弄乱jsp中的代码.
>理解后,第二种方法更加清晰,并且遵循一个通用标准.

上一篇:java-数据如何在Struts2中传输?


下一篇:java-从Struts2中的堆栈中删除拦截器