4、用Velocity替代JSP
(1)添加WebWorkVelocityServlet控制器:ww2/WEB-INF/web.xml
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>com.opensymphony.webwork.views.velocity.WebWorkVelocityServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
l 在web.xml添加WebWorkVelocityServlet控制器,并映射到*.vm
(2)配置webwork.i18n.encoding:ww2/WEB-INF/classes/webwork.properties
webwork.i18n.encoding=ISO-8859-1
l Velocity用到webwork.i18n.encoding
l webwork.i18n.encoding在WebWork2的缺省配置中没有设置,所以需要在webwork.properties中设置
(3)使用Velocity实现结果视图:hello.vm
<html>
<head><title>$action.getText('title')</title></head>
<body>
<h1>$action.getText('heading')</h1>
<p>$action.getText('greeting') $now
</p>
<h3>Products</h3>
#foreach( $product in $products )
$product.description <i>$ $product.price</i><br><br>
#end
<br>
<a href="priceIncreaseForm.action">Increase Prices</a>
<br>
</body>
</html>
l 使用资源束:使用$action.getText()方法获得
l 获得Action属性值:使用$PropertyName获得属性值
l #foreach指令同样用来遍历集合,不同的是使用变量接收集合中的元素对象,用来进一步访问其属性
(4)更改Action配置:ww2/WEB-INF/classes/xwork.xml
<result name="success" type="velocity">
<param name="location">/WEB-INF/template/hello.vm</param>
</result>
<!--
<result name="success" type="dispatcher">
<param name="location">/WEB-INF/jsp/hello.jsp</param>
</result>
-->
l 修改<result>标记,type属性设为velocity,location参数指定Velocity模版文件