今天为解决Velocity如何读取后来Java传递的值,上网找了好多资料,但好多资料都讲得不详细,最后很无奈,明知道@红薯 很忙的,都@了一下@红薯 ,@红薯老大还是很亲切的,很快就用Iphone回了我,就是用toolbox解决,感谢@红薯老大。
现在自己整理一番,并把源码贡献出来,希望可以帮到大家:
一、 我的工程结构如下:
二、 其中各文件的代码如下:
web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<display-name></display-name>
<welcome-file-list>
<welcome-file>index.vm</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.servlet.VelocityViewServlet
</servlet-class>
<!-- 这里将把toos.xml添加进来 -->
<init-param>
<param-name>test</param-name>
<param-value>/WEB-INF/tools.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>Velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
</web-app>
tools.xml:
<?xml version="1.0" encoding="utf-8"?>
<tools>
<!-- 这 里可以设置一些静态的数据 -->
<data key="id" value="999"></data>
<!-- 这里可以设置一些动态的数据,因为是由后台动态传递过来的 -->
<toolbox scope="application">
<tool key="test" class="com.test.bean.Test"></tool>
</toolbox>
</tools>
Test.java:
package com.test.bean;
public class Test {
private String name = "Vincent";
private int age = 27;
private String job = "IT";
private String blog = "http://my.oschina.net/VincentJiang";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public String getBlog() {
return blog;
}
public void setBlog(String blog) {
this.blog = blog;
}
}
index.vm:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<h1>Velocity Test</h1>
<hr>
##这里取toos.xml中key为id相应的value,即999
$id
<hr>
##以下三个标记符将取toos.xml中key为test对应的class所返回的值
$test.name
<hr>
$test.age
<hr>
$test.job
<hr>
<a href="$test.blog">$test.blog</a>
<hr>
<SCRIPT >
</SCRIPT>
</body>
</html>
最后显示出来的页面如下所示:
源码我也上传了,如下:
http://pan.baidu.com/share/link?shareid=416582&uk=3758266068