Java 以下哪一种是使用瓷砖的更好方法
问题:我有两个结构相同的页面Java 以下哪一种是使用瓷砖的更好方法,java,jsp,spring-mvc,struts2,tiles,Java,Jsp,Spring Mvc,Struts2,Tiles,问题:我有两个结构相同的页面home.jsp和contact.jsp。它们只在正文内容和标题上有所不同。我想使用tilesframework创建一个布局页面,并为两个JSPs重用代码。控制器框架尚未确定,它可能是springmvc3或struts2 解决方案A:直接从控制器/操作类调用JSP文件/视图 我在tiles.xml中编写了一个定义,如下所示: <definition name="baseLayout" template="/WEB-INF/jsp/layout/baseLayou
home.jsp
和contact.jsp
。它们只在正文内容和标题上有所不同。我想使用tiles
framework创建一个布局页面,并为两个JSP
s重用代码。控制器框架尚未确定,它可能是springmvc3
或struts2
解决方案A:直接从控制器/操作类调用JSP
文件/视图
我在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>
现在进入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>
解决方案B:调用来自cotrollers/action类的不同JSP
文件的tiles定义。这种方法需要为我将要编写的每个JSP
文件定义一个tiles
。因此,总共有3个瓷砖定义(一个用于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:联系人页面的内容
我想知道我应该坚持以上哪种方法。第二种解决方案是最好的方法:
- 您可以在
平铺
属性中为每个平铺设置独立部分
jsp
布局
- 您可以随时更改,而不会影响以后的其他布局
- 在
struts中使用最传统的方法
第一个解决方案:
- 可能会导致以后需要对其进行修改时出现问题
特别是当你深陷高级项目时
- 更通用的方法不适用于struts/tiles体系结构
设计
解决方案B是实施的最佳方法
- 您将拥有单独的样式模板,如果其他jsp需要,您可以在以后重用这些模板,而不会弄乱类似jsp的解决方案A中的代码
- 随着理解的深入,第二种方法更加清晰,并且是一个可以遵循的共同标准
解决方案A通过分发配置和促进名称约定而不是显式配置,帮助在大型应用程序中进行维护。此外,它在概念上与其他模板解决方案(如JSF或普通标记)兼容。例如,请参见:
考虑一个应用程序,它有数百个控制器和视图,由不同的人在很长一段时间内编写。使用解决方案B,您将不得不面对一个巨大的tiles.xml文件。添加一个稍微缺乏规范的视图名称,最终导致配置中出现不一致的混乱和内容(如您的示例)
<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>
<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>