最近在使用spring,利用velocity作为表现层。但是遇到个在vm模版中如何获取request,session属性的问题。
我配置如下。
 springContext.xml
  <bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
      <property name="resourceLoaderPath">
         <value>WEB-INF/velocityViews/</value>
      </property>
       <property name="velocityProperties">  
        <props>  
            <prop  key="input.encoding">UTF-8</prop>  
            <prop  key="output.encoding">UTF-8</prop>    
         </props>  
     </property>    
  </bean>  <bean id="velocityViewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
      <property name="suffix" value=".vm"/>  
      <property name="contentType"><value>text/html;charset=UTF-8</value></property>
      <property name="exposeRequestAttributes" value="true"></property>
  </bean>
 
  控制器 @Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception { System.out.println(request.getParameter("test")); return new ModelAndView("hello");
}
  hello.vm模版代码<html >
    <head>
      <title>VM首页</title>
</head>

    <body>
     
#set($word="中国")

hello,$word
$request.parameter.test


</body>


</html>
    
  但我使用hello.html?test=111访问时,在控制器里面确实获得了request的test内容,但是在vm模版上却无法获取,但是我已经设置exposeRequestAttributes为true了啊。
  请各位大侠帮忙

解决方案 »

  1.   

    就算使用$request.getParameter("test")也无法获得。各位大侠帮忙啊,到底怎么样才能获取模版内置的request,session等对象呢??
      

  2.   

    你java代码中的 test 是如何跟你那个页面联系的  你也没有映射  它哪知道往哪里显示 +_+
      

  3.   

    你可以在你的java文件里将这些参数put到对象里,然后通过$xxx来获取这个参数值。这个是肯定可行的
      

  4.   

    <html >
        <head>
          <title>VM首页</title>
        </head>
        
        <body>
             
            #set($word="中国")
            
            hello,$word        #set($test1 = $request.getParameter('test'))
                
            $test1
        </body>
        
        
    </html>velocity取内置对象要先set的,这样就可以取到了,试试吧
      

  5.   


    <!-- Velocity 视图解析器 -->
    <entry key="vm">
    <bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
    <property name="viewClass" value="cn.zwork.eap.base.view.ExtVelocityView" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="requestContextAttribute" value="rc" />
    </bean>
    </entry>"requestContextAttribute" 把Spring的RequestContext对象暴露为变量rc。利用${rc.contextPath}来获取应用程序的contextPath(也 就是/MyUsers);利用${rc.getMessage("user.name")}读取/WEB- INF/classes/messages.properties本地化信息。此对象对于那些不访问serlvet请求的View技术(也就是 Velocity和FreeMarker模板)来说是必不可少的。