Struts中Tiles标签简介

Tiles框架入门教程示例(springmvc整合tiles) Tiles框架入门教程示例(含Springmvc),简单的springmvc整合tiles框架,maven管理 立即下载

Tiles简介

 

我发现在看到的这些关于Tiles的文档中,Struts文档中关于这方面的介绍对于初学者来说是最好的(个人认为),所以就把它译了过来,对于想了解这方面东西又不想看E文的同胞,可以参考一下。翻译的漏洞在所难免,希望大家对照原文看,出现的错误希望大家帮我指正,谢谢。

 

                                                                  


 

    1.简介

 

Tiles框架可以令我们组合可以复用的Tiles来搭建网页。例如,下图中的页面就是通过组合一个header, 一个footer, 一个menu 和一个body搭建起来的。

                        

每一个Tiles(header, menu, body, ...)都是一个JSP页面,它们也可以通过组合其他的Tiles来搭建。

应用Tiles就好比是应用Java的方法:需要你定义Tiles(方法体),然后你才能够在任何你需要的地方“调用”该方法体,并传递一些参数。在Tiles中,为了避免与request参数相混淆,参数(parameters)被称为属性(attributes)。

Tiles的方法体(也可以说是内容——译者注)可以是一个简单的JSP页面,   或者是一个Struts的动作(action),或者任何一个指向现存的网页资源的URI。

插入或者调用Tiles可以通过在JSP中的任何位置置入如下tag来完成:<tiles:insert ...>。插入也可以通过下面的方法来完成:指定一个作为Struts forward的路径的自定义名;或者指定一个作为Struts action的input,forward或者include属性的自定义名。

Tiles的方法体是用来创建版面布局,可复用部分等的,而Tiles的插入操作是用来插入Tiles的。同一个Tiles可以在同一个站点甚至同一个页面被重用多次。

Tiles的插入可以与一个在Tiles中称作“definition”的逻辑名联系起来。一个Tiles的definition包含一个逻辑名,一个主体页面和一些属性值。definition的声明并不插入与其相关联的Tiles方法体,它只是让Tiles与它的逻辑名关联起来。可以在任何能够插入Tiles地方运用定义的逻辑名,这样与其对应的Tiles及其属性就被插入进来了。

Tiles的definition的定义可以在JSP页面中进行,也可以在一个或者多个中心控制文件中进行。Definition可以继承于另外一个Tiles的definition,重载一些属性,添加一些新的属性等等。这就允许“父类”的definition定义一些通用的layout, header, menu, footer. 所有其他继承于该父类的definition可以简单地通过改变其definition来改变整个页面。

 

2.简单的例子

 

(1)插入到JSP页面中:

 

<tiles:insert page="/layouts/commonLayout.jsp" flush="true" />
   

  
    
  

这个例子将tag中指定的页面插入到整个页面中来。page属性可以是指向任何现存网络资源有效的URL。

 

(2)插入一个Tiles同时传递属性值:

 

<tiles:insert page="/layouts/classicLayout.jsp" flush="true">
   
        <tiles:put name="title"  value="Page Title" />
   
        <tiles:put name="header" value="/common/header.jsp" />
   
        <tiles:put name="footer" value="/common/footer.jsp" />
   
        <tiles:put name="menu"   value="/common/menu.jsp" />
   
        <tiles:put name="body"   value="/tiles/mainBody.jsp" />
   
</tiles:insert>
   

 

这个例子插入了指定的页面,同时传递了它的属性值。属性值存储在Tiles的context中,这个context也被传递到插入的tag中,然后可以用它们的名字进行访问。

 

(3)作为String来得到一个属性

 

<tiles:getAsString name="title" />

 

这个例子得到 ”tilte” 属性的值,并在当前输出流中把它作为字符串打印出来。toString() 方法应用于该属性值,允许作为值来传递任何对象。

 

(4)通过引用属性来插入Tiles

 

<tiles:insert attribute='menu' />
   

 

该例子插入了被 “menu” 属性值引用的Tiles。当前的Tiles的context首先获得该属性值,然后它再用来作为页面目标而插入。

 

(5)典型的页面布局

这个例子是典型的header-footer-menu-body 组合而成的页面布局。

 

<tr>
   
  <td colspan="2"><tiles:insert attribute="header" /></td>
   
</tr>
   
<tr>
   
  <td width="140" valign="top">
   
    <tiles:insert attribute='menu' />
   
  </td>
   
  <td valign="top"  align="left">
   
    <tiles:insert attribute='body' />
   
  </td>
   
</tr>
   
<tr>
   
  <td colspan="2">
   
    <tiles:insert attribute="footer" />
   
  </td>
   
</tr>
   
</table>
   
</body>
   
</html>

该布局可以在一个JSP页面中声明(比如:/layouts/classicLayout.jsp)。它可以与在例子(2)中描述的tag一起结合运用。

 

3.Tiles的定义(Definitions)

 

Tiles的definition包含一个带有Tiles URL的逻辑名和一些属性值。定义并不插入Tiles。插入是在后来用definition的名字来完成的。一个definition的逻辑名可以在站点中使用多次,实现对Tiles的轻松复用。

Tiles的definition可以继承自另外一个definition,并且能够重载其属性或者添加属性。这使得通过一些属性来构造不同的definition变得更加容易。比如,你可以定义一个“父类”的definition同时定义主要的 header, menu, footer, 和一个默认的 title。然后令你的每一个页面的definitions继承自这个“父类”的definition并重载title和body属性。

Tiles的definitions的定义可以在JSP页面中进行,也可以在一个或者多个中心控制文件中进行。为了使中心控制文件中定义的definitions有效,你需要初始化“定义池”(definitions factory),这个定义池能够解释文件中的definitions并把它们提供给Tiles框架。

 

4.使定义池生效

 

为了使在文件中定义的Tiles definitions生效,你需要写下这些文件并初始化定义池。

初始化根据你是否应用Struts或者所用的Struts版本的不同而不同(这里只介绍了Struts1.1版本的配置)。

 

Struts1.1

 

应用Tiles的插件(plug-in)使Tiles definition生效。该插件创建定义池并把它传递给带有参数的配置对象。参数可以在web.xml文件中配置,也可以作为插件的参数来配置。插件首先从web.xml中读取参数,然后,重载那些在插件中也配置了的参数。所有的参数都是可选的,也可以忽略它们。插件应该在每一个struts-config.xml文件中声明:

 

<plug-in className="org.apache.struts.tiles.TilesPlugin" >
   
    <set-property property="definitions-config" 
   
                          value="/WEB-INF/tiles-defs.xml,
   
                            /WEB-INF/tiles-tests-defs.xml,/WEB-INF/tiles-tutorial-defs.xml,
   
                            /WEB-INF/tiles-examples-defs.xml" />
   
    <set-property property="moduleAware" value="true" />
   
    <set-property property="definitions-parser-validate" value="true" />
   
  </plug-in>
   

l         definitions-config:(可选)

指定配置文件的名称。可以有多个文件名,之间用逗号隔开。

l         definitions-parser-validate:(可选)

指定XML解释器是否验证Tiles的配置文件。

true::验证。DTD应该在文件开头指定(默认情况)

false:不验证。

l         moduleAware:(可选)

指定Tiles的定义池是否已模块对应化。如果是true(默认),对应每一个Struts模块都有一个定义池。如果是false,就会有一个为所有模块共用的定义池。对应后者,仍然需要每一个模块都对应定义一个plug-in插件。定义池将要以在第一个plug-in插件(一般是与默认的模块相关联的那个插件)中发现的参数值来初始化定义池。

true:Tiles框架是模块对应。

false:Tiles框架在所有的模块中只有一个共用的定义池(默认)。

l         tilesUtilImplClassname:(可选——高级用户使用)

指定所用的TilesUtil的实现的类名。指定的类应该是TilesUtilStrutsImpl类的子类。这一项使moduleAware选项失效。

指定 "TilesUtilStrutsImpl"相当于moduleAware = false。

指定 "TilesUtilStrutsModuleImpl" 相当于moduleAware = true.

当首次遇到这一项时,它被执行,并且只被执行一次。为了避免出现问题,建议在所有的TilesPlugin声明中都用相同的值。

 

TilesPlugin类为每一个Struts模块创建了一个定义池。

 

如果moduleAware处于false状态,那么就为所有的模块创建一个共用的定义池。对于后者来说,定义池就会以在第一个plugin中发现的参数来初始化。在每一个模块中应该声明对应的plugin,并且在整个应用程序当中,moduleAware都应该处于同一状态。

 

Tiles中的路径都是相对于main context来说的。

你不必指定具体的TilesRequestProcessor,plug-in会自动处理,然而,你想指定你自己的RequestProcessor,那么它应该继承自TilesRequestProcessor。plug-in会检查这项约束。

 

5.定义文件的语法

 

定义文件的语法可以在tiles-config_1_1.dtd文件中找到。

下面是一个简单的例子:


  
    
  
<!DOCTYPE tiles-definitions PUBLIC
   
       "-//Apache Software Foundation//DTD Tiles Configuration//EN"
   
       "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
   

  
    
  
<!-- Definitions for Tiles documentation   -->
   
<tiles-definitions>
   

  
    
  
  <!-- ========================================================== -->
   
  <!-- Master definition                                          -->
   
  <!-- ========================================================== -->
   
  <!-- Main page layout used as a root for other page definitions -->
   

  
    
  
  <definition name="site.mainLayout" path="/layouts/classicLayout.jsp">
   
           <put name="title"  value="Tiles Blank Site" />
   
           <put name="header" value="/tiles/common/header.jsp" />
   
           <put name="menu"   value="site.menu.bar" />
   
           <put name="footer" value="/tiles/common/footer.jsp" />
   
           <put name="body"   value="/tiles/body.jsp" />
   
  </definition>
   

  
    
  
  <!-- ========================================================== -->
   
  <!-- Index page definition                                      -->
   
  <!-- ========================================================== -->
   
    <!-- This definition inherits from the main definition.
   
           It overloads the page title and the body used.
   
           Use the same mechanism to define new pages sharing common 
   
           properties (here header, menu, footer, layout)
   
         -->
   

  
    
  
  <definition name="site.index.page" extends="site.mainLayout" >
   
           <put name="title"  value="Tiles Blank Site Index" />
   
           <put name="body"   value="/tiles/body.jsp" />
   
  </definition>
   

  
    
  
</tiles-definition>
   

 

6.调试 (Debugging)

 

若想调试由Tiles组建的页面,可以遵循下面的建议:

 

l         独立的检查每一个Tiles。直接访问那些嵌套的Tiles来测试它们是否运行正常。

是 Tiles 日志生效,详情请查阅 commons-logging 包的帮助文件。
菜鸟-需求预测与分仓规划 通过修改模型的损失函数对问题进行求解,比其它单模型的效果好很多。 阅读详情

相关推荐

W5500+STM32F103C8T6进行TCP通信(modbus)

一路生花一、w5500资料二、modbus通信三、从机代码四、总结五、参考 一、w5500资料 w5500的资料就放在下面了,单纯的客户端和其他模式上面有教程 https://www.aliyundrive.com/s/enPnnZgNtpE 二、modbus通信 Modbus RTU通信时使用的数据帧结构如下图,而Moubus TCP通信的数据帧和这个稍微不一样,没有crc检验,因为tcp本就是一种可靠传输协议 这里是Modbus TCP数据帧 公共功能码定义 三、从机代码

junseven164的博客 5778

tiles配置及标签使用

创建布局文件 Jsp代码   "http://tiles.apache.org/tags-tiles" prefix="tiles"%>                        "title" />                            "0" width="100%" cellspacing="5">

tangyuewei.com 1万+

BPMN2.0规范及流程引擎选型方案

本文主要简明扼要的介绍了BPMN2.0规范的内容,可让读者快速度的了解BPMN2.0所涵盖的主要内容和图形样式。也较为详细的阐述了如何绘制标准的流程图,以及在软件层面中如何实现业务流程功能,和技术选型。

比特桃 1万+

struts系列学习(tiles标签库二)

Tiles的使用(二)- -                                       Tiles定义          我们需要一种方法,在一个单独的可复用文件中定义所有的attributes和properties,当参数改变时能够重载这个文件,这就是Tiles Definitions要做的事情。好,下面就来吧!1.)声明Definitions         

reallyafei的专栏 2710

MPC模型预测控制实战:从理论到代码实现(Python示例)

本文详细介绍了MPC模型预测控制的实战应用,从理论到Python代码实现。通过构建系统模型、预测方程、优化问题及约束处理,展示了如何实现一个完整的MPC控制器。文章还提供了水箱液位控制的应用案例,帮助读者掌握MPC在工业控制中的实际应用。

weixin_42653691的博客 461

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1533

Tiles 2.x 应用指南

Jakarta Tiles是一个用于在模板中对页面进行布局的框架。Tiles产生之初是Struts架构的一部分,后来Tiles独立出来常与Spring架构配合,本文描述了独立于其它架构而在原始WEB应用中使用Tiles的方法。基本用法设置Tiles元素 - 核心配置文件的书写方法Tiles核心配置文件格式为xml,文档类型为tiles-definitions。要在每一个配置文件的开头加

丑小鸭技术专栏 4523

【100%通过率】华为od机试C卷【出差 / 员工派遣】Java&Go 实现

某公司部门需要派遣员工去国外做项目。现在,代号为 x 的国家和代号为 y 的国家分别需要 cntx 名和 cnty 名员工部门每个员工有一个员工号 (1,2,3,......),工号连续,从 1开始。部长派遣员工的规则:

MISAYAONE的博客 2640

strtus之Titles框架应用

Tiles框架建立在JSP的include指令的基础上,但它提供了比JSP的include指令更强大的功能。Tiles框架具有如下特性:- 创建可重用的模板- 动态构建和装载页面- 定义可重用的Tiles组件- 支持国际化 Tiles框架包含以下内容:- Tiles标签库- Tiles组件的配置文件- TilesPlugIn插件 Tiles标签库的标签和JSP include指令具有相

首席技术执行官CTO(Chief Technology Officer)|技术总监--邓斌博客 3841

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2284

第38节:cesium 风场效果(含源码+视频)

cesium 风场效果

qq_29384639的博客 2330

tiles框架的definition讲解

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "http://jakarta.apache.org/stru...

weixin_34007879的博客 527

UNet 改进(22):结合Transformer结构

保留了UNet的经典编码器-解码器结构在瓶颈层使用Transformer替代传统的卷积层采用跳跃连接保持空间细节信息使用双卷积块(DoubleConv)作为基础构建模块。

2401_82355416的博客 774

Struts Tiles 标签库

  tiles:insert page="/layouts/commonLayout.jsp" flush="true" />     插入到JSP页面中:这个例子将tag中指定的页面插入到整个页面中来。page属性可以是指向任

1207

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Structs的Tiles标签学习手记(一)

  Tiles是一个Template Engine,它可以让网页的配置(Layout)标签与内容分离,提一个版面管理机制。  Tiles是一个Template Engine,它可以让网页的配置(Layout)标签与内容分离,提一个版面管理机制。在网页上最常用来处理版面的是表格,透过将表格边框设定为0,可以用它来切割版面,并在当中置入内容,然而一大堆版面配置的标签将与内容夹杂在一起(个人就不太喜欢处

Java之路 5862

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Jakarta Struts编程:使用Tiles,第二部分

 Jakarta Struts编程:使用Tiles,第二部分作者:Chuck Cavaness   陈正勇(zhengyongchen@21cn.com)译        本文是从《Programming Jakarta Struts》摘录的系列文章的第二部分,我们将学习如何安装和配置Tiles,并全面了解tiles。 安装和配置Tiles在您能够使用Tiles 框架之前,

命运是一只沦落在鸡窝里的鹰 1542

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

struts系列学习(tiles标签库三)

 Tiles的使用(三)                                     将应用程序迁移到Tiles中        在前面的章节我们描述了Tiles使你的应用程序更加和谐统一,容易使用。我们也说了统一是良好设计的特点。因为统一就意味着可复用。复用会使得应用程序稳定,容易维护。         你也许经常希望你现有的应用程序用Tiles上技术。让它看起来更加和谐

reallyafei的专栏 1782

Tiles标签库

Tiles简介   我发现在看到的这些关于Tiles的文档中,Struts文档中关于这方面的介绍对于初学者来说是最好的(个人认为),所以就把它译了过来,对于想了解这方面东西又不想看E文的同胞,可以参考一下。翻译的漏洞在所难免,希望大家对照原文看,出现的错误希望大家帮我指正,谢谢。     1.简介   Tiles框架可以令

ZHENGJUEQI的专栏 1142

Struts Tiles标签学习笔记 [ 原创 ]

Struts Tiles标签学习笔记:1,Tiles可以不使用配置文件,就比jsp:include强一点,差别就是能够传参数. 语法分两个部分:  模版里A.jsp   使用模版的页面B.jsp                2, Tiles 使用配制文件,文件里定义的叫"tiles组件" 简称"组件". 语法:  配置文件里tiles-defs.xml              这个com1组件

1839

Struts的tiles标签

<br />下面开始讲解tiles标签,那么先引用2个问题,什么是tiles标签,tiles标签有什么用?<br />什么是tiles标签:tiles标签是建立在JSP的include的基础之上的一组标签。<br />tiles标签的作用:tiles标签为创建Web页面提供了一种模板机制,使网页的布局和网页的内容相分离。<br />实现tiles标签有两种方式,第一种tiles模板方式,第二种tiles组件方式。<br />tiles模板应用<br />首先,新建一个templet.jsp页面,我们需要先定

liaomin416100569的专栏 730

Struts Tiles 框架概述

       Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离。允许先创建模板,然后在运行时动态地将内容插入到模板中。    在我们已知的创建符合式网页的方法中,包括:  采用基本的JSP语句创建符合式网页。这种方法会导致JSP代码的大量冗余,后果是重复编码、多处修改,大大增加开发和维护成本。  采用JSP的include指令创建符合式网页。和第一种方案相比

晨雨的专栏 3475
wallent
博客等级 码龄23年 0粉丝 1原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值