velocity中自定义指令的用法
来源:互联网 发布:传播学就业方向 知乎 编辑:程序博客网 时间:2024/05/29 09:38
velocity是类似于jsp并且比jsp更为强大的引擎,用法也很简单
和jsp的配置差不多
1.在mvc-servlet.xml中配置velocity的引擎、视图解析器、配置文件路径等配置;
2.视图层使用**.vm格式即可
基本用法可自行百度 这里说自定义指令的做法
1. 创建一个类继承自Directive类 (这是velocity定义指令必须使用的类)
2. 实现Directive类里定义的三个抽象方法,
1.getName()此方法用来设置指令的名称
2.getType()此方法用来设置是否需要结束语句
3.render(InternalContextAdapter context, Writer writer, Node node) 此方法中写指令需要执行的内容,其中context 是传入的参数的内容,writer用来输出结果,node此对象如果用多个参数使用jjtGetChild(index)来获取参数位置通过.value(context)获取当前位置参数的值
3.需要在velocity的配置文件中配置此节点的位置,以便于当前自定义指令的初始化
4. 都完成之后可以在vm文件中 通过配置的getName名称进行调用 例如 假设指令名称配置为name #name(“参数1”,”参数2”);即可!
简单的代码如下:
1.mvn-servlet.xml配置
<!--velocity配置--> <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> //配置视图层的路径 <property name="resourceLoaderPath" value="/WEB-INF/views"/> //velocity配置文件的位置 <property name="configLocation" value="classpath:velocity.properties"/> //字符编码 <property name="velocityProperties"> <props> <prop key="input.encoding">utf-8</prop> <prop key="output.encoding">utf-8</prop> </props> </property> </bean> <!--配置velocity试图解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> //解析字符串增加后缀 <property name="suffix" value=".vm"/> //前缀 <property name="prefix" value=""/> //返回的类型 <property name="contentType" value="text/html;charset=utf-8"/> </bean>
自定的directive代码如下:
public class DemoDirective extends Directive{ @Override public String getName() { return "demo";//自定义指令的名称 } @Override public int getType() { return 2;//配置不带结束符 } @Override public boolean render(InternalContextAdapter context, Writer writer, Node node) throws IOException, ResourceNotFoundException, ParseErrorException, MethodInvocationException { //获取参数的值 String str1 = node.jjtGetChild(0).value(context).toString();//第一个参数的值 String str2 = node.jjtGetChild(1).value(context).toString();//第二个参数的值 StringBuffer str = new StringBuffer();//创建字符串对象 if(str1 !=null){ str =str.append("<p>测试结果1:"+str1+"</p>");//显示一段html } if(str2 !=null){ str =str.append("<p>测试结果2:"+str2+"</p>"); } writer.write(str.toString());//输出结果 return true; }}
配置文件配置代码:
resource.loader = filefile.resource.loader.description = Velocity File Resource Loader#encodinginput.encoding=UTF-8output.encoding=UTF-8#autoreload when vm changedfile.resource.loader.cache=falsefile.resource.loader.modificationCheckInterval=2velocimacro.library.autoreload=false#自定义指令############################ 配置自定义指令的绝对路径userdirective = com.mixa.util.DemoDirective ###########################################
视图层代码:
<!DOCTYPE html><html><head></head><body>//测试指令 #demo("参数1","参数2");</body></html>
输出结果:
测试结果1:参数1
测试结果2:参数2
这是最简单的一个测试类 大家可以根据需要在render中书写相应的业务逻辑以获取到自己想要的htmL对象结果返回到vm显示
多少不凡、只因不甘!
一个初出茅庐的程序员 希望成长 希望进步
- velocity中自定义指令的用法
- 编写自定义的 Velocity 指令
- 编写自定义的 Velocity 指令
- 编写自定义的 Velocity 指令
- 编写自定义的 Velocity 指令 #cache
- velocity自定义指令示例
- Velocity自定义指令(函数)
- velocity自定义标签和指令
- velocity自定义标签和指令
- velocity自定义标签和指令
- Velocity 指令的转义
- angularjs自定义指令的用法
- velocity中使用ssi的#include指令冲突的解决办法
- spring boot velocity自定义指令 java
- Velocity的基本用法
- Velocity的基本用法
- velocity的用法
- velocity的一些用法
- layer.open web弹层组件
- Windows共享内存示例
- mysql-数据类型之整型、浮点型、日期时间型、字符型
- 思维导图怎么画:多方法绘制自己喜欢的思维导图技巧
- Windows高效率软件推荐(不定期更新)
- velocity中自定义指令的用法
- web前端开发中防止重复提交
- java中序列化的理解
- 解决`Sublime Text` 不能被设置为默认打开方式
- 大数据生态系统基础: HBASE(一):HBASE 介绍及安装、配置
- LuoguP1031 均分纸牌
- 编辑器ueditor和springboot 的整合
- unity-打tag技巧
- ibatis中Could not find SQL statement to include with refid的原因