Search code examples
spring-mvcvelocitydispatcher

Load velocity view


I have problem when using Velocity. I got this error when access "/my-website/login" link:

2014-04-07 16:50:48,900 16:50:48.900 [http-bio-8181-exec-3] WARN  o.s.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/my-website/WEB-INF/views/_layouts/login.vm] in DispatcherServlet with name 'dispatcher'

My LoginController.java is

@RequestMapping(value = "/login", method = RequestMethod.GET)
public ModelAndView index(HttpServletRequest request) {
    ModelAndView model = new ModelAndView();
    model.setViewName("_layouts/login");
    return model;
}

My web.xml is here

    ...
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.vm</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/themes/*</url-pattern>
    </servlet-mapping>
    ...

and the dispatcher.xml is

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.vm</value>
    </property>
</bean>

So, what is problem? Please help me!


Solution

  • You should remove InternalResourceViewResolver and use VelocityViewResolver. Like this

    Your dispatcher.xml should be:

    <bean class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath">
            <value>/WEB-INF/views/</value>
        </property>
    </bean>
    
    <bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="prefix">
            <value></value>
        </property>
        <property name="suffix">
            <value>.vm</value>
        </property>
        <property name="toolboxConfigLocation">
            <value>/WEB-INF/velocity-toolbox.xml</value>
        </property>
    </bean>