java - ¿Es posible usar diferentes resolutores de vistas?
spring-mvc birt (1)
Usted absolutamente puede. ViewResolver tiene un único método, resolveViewName(String) que devuelve
el objeto Ver, o nulo si no se encuentra (opcional, para permitir el encadenamiento ViewResolver)
Sus beans ViewResolver están registrados. Cuando un manejador devuelve un nombre de vista, Spring ViewResolver través de cada ViewResolver , invocando su método resolveViewName con el nombre dado. Si el método no es -null , se utiliza esa View . Si se devuelve null , continúa iterando.
Entonces la implementación tiene que devolver null si Spring debe omitirlo.
Hay algunas implementaciones que nunca vuelven null . Este parece ser el caso con sus clases personalizadas de ViewResolver . Si ViewResolver devuelve una View , incluso si esa View finalmente no se procesara, Spring la usará.
O necesita corregirlo o pedir sus beans ViewResolver . Por ejemplo, puede pedirlos con la interfaz Ordered . Haga que sus clases implementen esa interfaz y devuelvan un valor apropiado.
Tengo múltiples resoluciones de vista en una configuración de Spring y quería usar diferentes resoluciones de vista para diferentes solicitudes.
Ejemplo: Para las URL que comienzan con report_* , use Birt view resolver, y para las llamadas ajax use Tiles resolver, y así sucesivamente.
Se intentó establecer la propiedad de la orden, pero todas las vistas son resueltas por tilesViewResolver .
<beans:bean id="tilesViewResolver" class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
<beans:property name="viewClass" value="com.example.example.util.AjaxTiles21View"/>
</beans:bean>
<beans:bean id="birtViewResolver" class="org.eclipse.birt.spring.core.BirtViewResolver">
...
<beans:property name="order" value="2" />
</beans:bean>
<beans:bean id="beanNameResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver">
<beans:property name="order" value="1" />
</beans:bean>