Struts2与Velocity模板2.doc
上传人:sy****28 上传时间:2024-09-10 格式:DOC 页数:3 大小:35KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

Struts2与Velocity模板2.doc

Struts2与Velocity模板2.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

09-Struts2与Velocity模板---HYPERLINK"http://www.ilkj.net/"www.ilkj.net---Velocity是一种基于JAVA的模板引擎,开发人员使用简单的模板语言就可以快速开发显示层,它使得显示层与程序代码分离,在早期的Webwork版本中,所有UI标签均使用Velocity模板引擎生成,可以在Struts-core-2.0.8.jar中找到template文件夹,其中的archive文件夹下存放着原有的vl文件!在Struts2中查找vm文件的顺序先查找Web应用程序,再查找类路径。如果你需要使用vm作为显示层,只需要在配置文件中指定result的type属性为velocity,然后将<param>的location属性指定到一个以vm结尾的资源上就可以了!1.Struts2中的Velocity中文乱码的处理方式:因为在Velocity-1.4.jar中的org.apache.velocity.runtime.defaults中定义的velocity.properties中定义的input.encoding=ISO8859-1,output.encoding=ISO8859-1,通常最好在VM文件中使用%{getText(‘’)}调用国际化资源文件的内容就不会产生乱码。2.Velocity的vm文件必须要经过Action才可以访问,以便被程序解析,不可以直接访问vm文件。3.在vm文件中使用Struts2的标签只需要在原有标签前加#s就可以了,参数之间使用””分隔!(1.)例如下面是一个表单的定义:#sform(“action=Student”namespace=”/ilkj/student”)#stextfield(“label=%{getText(‘student.label.name’)}”“name=student.name”)#spassword(“label=%{getText(‘student.label.password’)}”name=student.age”)#ssubmit(“value=getText(‘globale.label.submit’)”)#end(2.)下面是取出session中的一个参数的值#sproperty(“value=#session.information”“default=noValue”)(3.)下面是访问Action中的属性${student.name},当然你也可以简单写成$student.name的形式。注:其实Velocity本身提供了强大的语法,如#if与#else条件判断、#foreach()循环等,但由于我们使用Struts2框架,因为框架本身提供的标签已经很强大,所以如果不想记忆下面的Velocity语法也没有关系,直接使用Struts2.0的标签就可以了哦!4.Velocity的内建变量:stack---ValueStack,可以使用${stack.findString(‘OGNL表达式’)}取值action---最近执行的Action,例如${action.getStudent().getName()}或者也可以直接写${action.student.name}response---HttpServletRequestrequest---HttpServletResponsesession---HttpSessionapplication---ServletContextbase---生成应用的上下文,相当与request.getContextPath()5.注释语法(1.)单行注释:##(2.)多行注释:#*......*#6.暂停执行#stop---停止执行后面的模板内容7.转义字符Velocity使用\转义字符,例如email被定义为andrew830314@163.com(#set($email=’andrew830314@163.com’)),你还想输出$email而不被Velocity解析,那么你可以使用\$email。8.引入其他文件#include(“”),如果是JSP或者vm文件将会显示内容,其他文本文件显示文本,二进制会显示乱码,引入多个文件使用,间隔,#parse(“”)引入一个本地的vm文件,与#include(“”)不同,#parse(“”)只能引入一个文件,并且#parse(“”)可以访问父模板里的变量。9.模板代码复用#macro(代码段名称$参数1......)......#end只要使用#代码段名称($参数1......)就可以使用这段代码,当然你