Tiles学习笔记(-)

上一篇 / 下一篇  2004-11-05 00:00:00 / 个人分类:Java

术语词汇表

Tiles
Struts 用来创建表示组件的模板框架。

页面
tile 布局包括的 Web 资源。

Tile
同页面。

区域
tile 布局中插入其他 tile 的范围。 区域拥有诸如页眉、页脚之类的逻辑名称。

Tile 布局
描述其他页面应该定位在何处的 JSP 页面。Tile 布局充当模板,定义了插入其他 tile 的区域。 一个 tile 布局可以是另一个 tile 布局的 tile。

定义
定义用于调用某个 tile 布局的参数。



Tile 布局
Tile布局可以接受传入的参数。
传入的参数可以是字符串,也可以是一个jsp页面或者其它的web resource。或者其它的一些对象。
传入参数的可见范围局限于本Tile布局。

默认参数
默认参数通过 Tile定义来达成。 可以在jsp或者xml文件中声明定义。 综合使用Tile定义和Tile布局,可以实现可重用的显示组件。


典型的 tile 布局
典型的 tile 布局可能为页眉、页脚、菜单和正文定义矩形区域。

创建 tile 布局 
一旦找出了页面之间的相似之处(这是困难的部分),您就能够创建新的布局页面(这是容易的部分)。
为了创建一个 tile 布局,您必须做以下事情:
使用标签库指令将 tile 标签库导入 JSP,同时导入需要的其他任何标签库。
使用字符串参数来显示像页面这样使用 tiles:getAsString标签的内容。
使用 tiles:insert 标签将 tile 插入布局的适当区域。
使用 tiles:put 标签向内部 tile 传递任何需要的参数 —— 这个标签是 tiles:insert 标签的子标签。

布局页面(siteLayout.jsp)的完整清单:

 <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
 <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
 <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

 <html>

   <head>
     <title>
         <tiles:getAsString name="title" ignore="true"/>
     </title>
   </head>

   <body>
     <table width="500" border="0" cellspacing="0" cellpadding="0">

       <tr bgcolor="#36566E">
         <td height="68" width="48%">
           <div align="left">
             <img src="images/hp_logo_rickhightower.gif"
                  width="220" height="74">
           </div>
         </td>
       </tr>

       <tr>
         <td height="68" width="2000"> 
             <tiles:insert attribute="header" ignore="true">
                <tiles:put name="title"
                           beanName="title" beanScope="tile"/>
             </tiles:insert>
          </td>  
       </tr>
       <tr>
         <td>
             <div align="center">
             <tiles:insert attribute="content"/>
             </div>
         </td>
       </tr>
       <tr>
         <td>
             <tiles:insert attribute="footer" ignore="true"/>
         </td>
       </tr>
      
     </table>
    
   </body>
 </html>

调用的例子

 &lt;%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %&gt;

 &lt;tiles:insert page="/siteLayout.jsp" flush="true"&gt;

 &lt;tiles:put name="title" type="string"
                     value="Get Rick Hightower Stock Quote" /&gt; 
 &lt;tiles:put name="header" value="/header.jsp" /&gt;
 &lt;tiles:put name="footer" value="/footer.jsp" /&gt;
 &lt;tiles:put name="content" value="/indexContent.jsp"/&gt;
 &lt;/tiles:insert&gt;

DRY (Don't repeat yourself). 即便是这样,仍然有着重复的代码。想象一下,可能需要在很多页面里重复这些:

 &lt;tiles:insert page="/siteLayout.jsp" flush="true"&gt;

  &lt;tiles:put name="header" value="/header.jsp" /&gt;
  &lt;tiles:put name="footer" value="/footer.jsp" /&gt;
  &lt;tiles:put name="content" value="/indexContent.jsp"/&gt;
  &lt;/tiles:insert&gt;

所以:Tile还提供了很多其他的功能让DRY。

定义(definition)定义了 tile 布局的默认参数。定义(definition)可以在 JSP 代码或 XML 中定义。

创建一个 JSP 定义siteLayoutDefinition.jsp

 &lt;%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %&gt;
 &lt;%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %&gt;
 &lt;!--使用 taglib 指令导入 tile 标签库。 --%&gt;

 &lt;logic:notPresent name="siteLayoutDef" scope="application"&gt;
 &lt;!--使用 logic:notPresent 标签来确保该定义仅被定义一次。--%&gt;
   &lt;tiles:definition id="siteLayoutDef"
                     page="/siteLayout.jsp"
                     scope="application"&gt;
  &lt;!--使用 tiles:definition 标签来定义该定义,同时传递定义了 tile 布局的 JSP 页面以及新创建的定义的范围。--%&gt;
     &lt;tiles:put name="title" type="string"
                      value="Rick Hightower Stock Quote System" /&gt;

   &lt;!--使用 tiles:put 标签定义默认参数。 --%&gt;

     &lt;tiles:put name="header" value="/header.jsp" /&gt;
     &lt;tiles:put name="footer" value="/footer.jsp" /&gt;
     &lt;tiles:put name="content" type="string"&gt;
        Content goes here
     &lt;/tiles:put&gt;
   &lt;/tiles:definition&gt;
 &lt;/logic:notPresent&gt;

下面是一个使用 tile 定义的例子(index2.jsp):

 &lt;%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %&gt;
 &lt;jsp:include page="siteLayoutDefinition.jsp"/&gt;

 &lt;tiles:insert beanName="siteLayoutDef" beanScope="application"&gt;
     &lt;tiles:put name="title" type="string"
                value="Get Rick Hightower Stock Quote 2" /&gt;
     &lt;tiles:put name="content" value="indexContent2.jsp"/&gt;
 &lt;/tiles:insert&gt;


TAG:

引用 删除 dfdf   /   2008-08-11 16:08:19
不好
引用 删除 dfdf   /   2008-08-11 16:07:46
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-10-12  
   1234
567891011
12131415161718
19202122232425
262728293031 

我的存档

数据统计

  • 访问量: 1264
  • 日志数: 431
  • 建立时间: 2008-01-08
  • 更新时间: 2008-01-08

RSS订阅

Open Toolbar