I am working on an app which provides views for some service and acts as web service for others.
In controller i have mapped ‘/’ to a view and when the app starts this view is shown.
Now when i am trying to use view resolver like this
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="html" value="text/html" />
<entry key="xml" value="application/xml" />
</map>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller"
p:autodetectAnnotations="false" />
</constructor-arg>
</bean>
</list>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
</list>
</property>
</bean>
<bean id="jspView" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
But problem is now everything is coming in xml format. So when i start the application
the first page by default comes in xml format but i want a view.
By default,
ContentNegotiatingViewResolveruses the HTTPAcceptrequest header to decide which view to render. It would only send back an XML view if the client indicated in that header that it could handle theapplication/xmlcontent-type, which some browsers do.If the browser indicates that it can accept HTML and XML, then it’s unpredictable as to which you’ll get back. In the absense of any other information, Spring has no way to decide which one you want.
If your URL path is just
/, then you’re giving it no useful information other than what the browser sends by default.ContentNegotiatingViewResolvercan be reconfigured to use a file extension in the URL to decide which view to resolve, by setting thefavorPathExtensionproperty totrue. This will, for example, response to request for/blah.xmlwith XML, taking precedence over theAcceptheader.ContentNegotiatingViewResolverhas a few other options, I suggest reading the javadoc carefully.