关于Spring与Velocity结合的问题(获得request,session)
视图解析器的一些属性
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="exposeSpringMacroHelpers" value="true"/>
<property name="requestContextAttribute" value="rc"/>
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</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中。(理解同上)