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!
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>