Skip to content

Instantly share code, notes, and snippets.

@myabc
Created June 24, 2009 13:14
Show Gist options
  • Select an option

  • Save myabc/135251 to your computer and use it in GitHub Desktop.

Select an option

Save myabc/135251 to your computer and use it in GitHub Desktop.
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml"/>
<entry key="html" value="text/html"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="com.test.web.view.ExtensionAwareBeanNameViewResolver" p:extension="json"/>
<bean class="com.test.web.view.ExtensionAwareBeanNameViewResolver" p:extension="atom"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
</bean>
<bean id="ViewName-atom" class="com.test.rest.SampleContentAtomView"/>
<bean id="ViewName-json" class="net.sf.json.spring.web.servlet.view.JsonView"/>
package com.test.web.view;
import java.util.Locale;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.View;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.BeanNameViewResolver;
public class ExtensionAwareBeanNameViewResolver extends
BeanNameViewResolver implements
ViewResolver, Ordered {
private String extension;
public View resolveViewName(String viewName, Locale locale) throws
BeansException {
ApplicationContext context = getApplicationContext();
String fullViewName = viewName + "-" + extension;
if (!context.containsBean(fullViewName))
{
// Allow for ViewResolver chaining.
return null;
}
return (View) context.getBean(fullViewName, View.class);
}
public void setExtension(String extension) {
this.extension = extension;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment