使用tiles2

Java基于WEB的开发中,在用户界面方面简化开发的工具上,大家的选择习惯性的受一些知名框架的影响去左右。我也不例外,最早时受struts的影响,使用了tiles,并且很愿意使用这种Tiles的用户界面开发习惯,并且在我的开发团队当中推广这种模式。

tiles可以方便的应用在任何jsp、servlet的项目中,下面我对tiles的应用进行一下介绍,如果有不足的地方,欢迎朋友们进行交流。

1、准备
我比较建议大家先到http://tiles.apache.org花十分钟时间读一下他的Getting Started和quickstart文档,很有益。然后点击http://www.apache.org/dyn/closer.cgi/tiles/v2.0.5/tiles-2.0.5-bin.tar.gz下载这份tiles-2.0.5(GA)版本。

 

2、配置tiles-def.xml
如果你曾经使用过tiles,下面这个配置文件很熟吧?如果你没用过,呵,对你来说也是很好理解的吧。

   
   
   
   
   
     
     
         
         
         
         
         
     
     
     
      
       
     
   

 

标签内主要的子节点就是标签,这个标签属性如下:

属性
名称 是否必须 值必须 值类型 说明
name true true java.lang.String

指定将要创建的一个definition bean的访问名称。这个必须有的。

template false true java.lang.String

哪一个文件是模板文件,这个模板文件后面会介绍。

role false true java.lang.String

如果配置了这个值的话,需要role的值相等,这个definition才被有效访问,这个功能我没有深究,也不推荐使用,建议大家建立自己更完善的权限控制管理。当然欢迎朋友们完善role应用的示例,tiles自带role的示例,有兴趣的人去读一下就明白了。

extends false true java.lang.String

继承哪一个definition,值是你要继承的definition的name的值。高使用率的属性。

preparer false true java.lang.String

呵,我没使用,如果你要使用的话,要写一个实现他的Prepare接口的类,作用就是在展现你定义的页面前会先执行你的prepare。

实际上一般按我的例子中的就足够用了,OK,我们继续吧。

 

3、配置web.xml

多么easy的事情啊,打开你的web.xml,用你的鼠标copy & paster下面的代码并放到你的web.xml的节点下。


  
  	
  		org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
  	
  	
  		/WEB-INF/tiles/tiles-defs.xml
  	
  


	
		
			org.apache.struts2.tiles.StrutsTilesListener
		
	

 

4、框架页layout.jsp

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>   
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   
   
       
           
        <tiles:getAsString name="title" />   
           
       
      
        
<%-- /* 主要信息和操作界面 * */ --%>
<%-- //主信息和操作界面结束。 --%>

 

 

 特别注意其中两个节点,getAsString如下:

属性
名乐 是否必须 值必须 值类型 说明
name true true java.lang.String

属性名称,引用definition attribute的名称

ignore false true boolean

如果设为true,如果发生异常什么的,就给出空白内容。默认为false,会给出cause。

role false true java.lang.String

别用了吧,有兴趣的人去看吧,不推荐使用。

insertAttribute的属性如下:

属性
名称 必须 值必须 值类型 说明
name false true java.lang.String

要插入的属性名称,如果value有值,将被忽略.

value false true java.lang.Object

如果有值,会被直接使用,一般我不太直接用,如果直接用的话,一般也是直接给一个jsp文件的相对content路径。

flush false false boolean

在插入这个页面前先把out stream进行一次flush干净操作。

ignore false true boolean

同getAsString的解释。

role false true java.lang.String

不推荐使用。说n次了。下同

preparer false true java.lang.String 同上

因为我用了一个表格作范例,用表格区格开了body、footer、header、info的定义。其中info是否展现,又采用了c标签和EL语句。你要想写个更简单的页面例子,也可以,为了方便理解,我拿一个tiles官方的layout大家看一下:

 

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>   
   

 

你可能感兴趣的:(web開發)