In Spring MVC, XmlViewResolver is used to resolve “view name” based on view beans in the XML file. By default, XmlViewResolver will loads the view beans from /WEB-INF/views.xml, however, this location can be overridden through the “location” property :
<beans ...>
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/spring-views.xml</value>
</property>
</bean>
</beans>
In above case, it loads the view beans from “/WEB-INF/spring-views.xml“. See XmlViewResolver example :
1. Controller
A controller class, returns a view, named “WelcomePage“.
//...
public class WelcomeController extends AbstractController{
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModelAndView model = new ModelAndView("WelcomePage");
return model;
}
}
2. XmlViewResolver
Register the XmlViewResolver in the Spring’s bean configuration file, loads the view beans from “/WEB-INF/spring-views.xml“.
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean
class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
<!-- Register the bean -->
<bean class="com.mkyong.common.controller.WelcomeController" />
<bean class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location">
<value>/WEB-INF/spring-views.xml</value>
</property>
</bean>
</beans>
3. View beans
The “view bean” is just a normal Spring bean declared in the Spring’s bean configuration file, where
- “id” is the “view name” to resolve.
- “class” is the type of the view.
- “url” property is the view’s url location.
File : spring-views.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="WelcomePage"
class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="/WEB-INF/pages/WelcomePage.jsp" />
</bean>
</beans>
When a view name “WelcomPage” is returned by controller, the
XmlViewResolver will find the bean id “WelcomPage” in “spring-views.xml” file, and return the corresponds view’s URL “/WEB-INF/pages/WelcomPage.jsp” back to the DispatcherServlet.
i see in in spring-views.xml, the class value is JstlView,
is it always filled with JstView when i want to register another view url?
I think all these are related 2.5 version, kindly update them to 4.* version
Thank You very much for such great videos
Hello,
Can we have more than 1 location or view file for XmlViewResolver.
If not can we create 2 beans of XmlViewResolver.
Thank You
Aditya
Hello,
There is a spelling mistake in below line
In Spring MVC, XmlViewResolver is used to resolve “view anme” based
on your
https://mkyong.com/spring-mvc/spring-mvc-xmlviewresolver-example/
post
Good posts
Article updated, thanks for your correction.
one can call the application using following URML.
http://localhost:8080/SpringMVC/welcomepage.htm