初学 tiles 框架
老师也没教全 如下有(公有的) :
head.jsp 
menu.jsp
footer.jsp tiles_defs.xml中:
<definition name="index_def" path="/layout.jsp">
<put name="head" value="head.jsp"/>
<put name="menu" value="menu.jsp"/>
<put name="body" value=""/>
<put name="footer" value="footer.jsp"/>
 </definition>  <definition name="a_def" extends="index_def">
   <put name="body" value="a_body.jsp" /> 重写主框架的put或添加
 </definition><definition name="b_def" extends="index_def">
   <put name="body" value="b_body.jsp" /> 重写主框架的put或添加
 </definition>
需要应该用的有2个页面:
a.jsp 和 b.jsp进入a.jsp中 就一句:
<tiles:insert definition="a_def"/>
用来加载框架 而主体内容在a_body.jsp页面中当超链接到b.jsp中 也就一句:
<tiles:insert definition="b_def"/>
用来加载框架 而主体内容在b_body.jsp页面中这样1个页面需要2个jsp文件来完成 是不是非常不方便啊所以我想问问 正规的<tiles>框架应该是怎么样写的

解决方案 »

  1.   

    很多时候,你的多个页面可能有相同的一部分内容,你希望将相同的部分放到同一个文件,这时候有两种方案:
    1、用<%@include file="">或用<jsp:include
    2、用tiles将公共部分做成模板。用1的缺点是,如果多个页面的头部和底部是相同的,就得分别写到两个文件中,这两个文件分别用可视化编辑器打开时,它就不认为是一个有效的文件,因为很多标签只有开头没有结尾,或反之。如果相同部分再复杂些,拆出来的公用文件很可能让人看不懂。而tiles不存在这些问题
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title><tiles:insertAttribute name="title"/></title>
    <tiles:insertAttribute name="head" ignore="true"/>
    </head>
    <body>
    <tiles:insertAttribute name="main" ignore="true"/>
    </body>
    </html>
      

  2.   

    请问1楼的大大 如何将用tiles将公共部分做成模板??请贴上示例代码 好吗 谢谢!
      

  3.   

    我上面贴的就是个模板文件
    使用模板:
    <%@page contentType="text/html; charset=UTF-8"%>
    <tiles:insertTemplate template="mytemplate.jsp">
    <tiles:putAttribute name="title">标题</titles:putAttribute>
    <tiles:putAttribute name="head">这部分内容会加到head中</titles:putAttribute>
    <tiles:putAttribute name="main">这部分内容会加到body中</titles:putAttribute>
    </tiles:insertTemplate>