<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> <property name="cache" value="false" /> <property name="contentType" value="text/html;charset=UTF-8" /> <property name="suffix" value=".vm" /> <property name="exposeRequestAttributes" value="true" /> <property name="requestContextAttribute" value="rc"/> <property name="exposeSpringMacroHelpers" value="true" /><!--是否使用spring对宏定义的支持--> <property name="order"> <value>0</value> </property> <property name="dateToolAttribute"> <value>dateTool</value> </property> <property name="numberToolAttribute"> <value>numberTool</value> </property> </bean>
在 视图解析器的定义中,"exposeSpringMacroHelpers"设置是否经过Spring的宏库暴露一个RequestContext(名为 springBindRequestContext)供外部使用,默认值为false。它暴露了处理表单和验证错误信息的宏操做;
"requestContextAttribute" 把Spring的RequestContext对象暴露为变量rc。利用${rc.contextPath}来获取应用程序的contextPath(也 就是/MyUsers);利用${rc.getMessage("user.name")}读取/WEB- INF/classes/messages.properties本地化信息。此对象对于那些不访问serlvet请求的View技术(也就是 Velocity和FreeMarker模板)来讲是必不可少的。
还有一些属性:
exposeRequestAttributes:默认值false,设置是否全部的request属性在与模板进行合并以前添加到model中。(能够理解为request范围内包含的全部对象,而不是一个真正的Request对象。)
exposeSessionAttributes:默认值false,设置是否全部的session属性在与模板进行合并以前添加到model中。(理解同上)html