Как вы говорите, вы не можете связать их вместе. Javadoc для обоих штатов ясно, что они оба должны быть в конце цепочки резольвера.
Я полагаю, что если вам действительно нужно использовать их вместе, то вы пишете простую пользовательскую реализацию ViewResolver, которая берет имя представления и решает, какому из двух ваших «реальных» преобразователей представления делегировать. Это предполагает, что вы можете указать, какой распознаватель следует вызывать, основываясь на имени представления.
Итак, вы бы определили собственный ViewResolver следующим образом:
public class MyViewResolver implements ViewResolver {
private ViewResolver tilesResolver;
private ViewResolver jspResolver;
public void setJspResolver(ViewResolver jspResolver) {
this.jspResolver = jspResolver;
}
public void setTilesResolver(ViewResolver tilesResolver) {
this.tilesResolver = tilesResolver;
}
public View resolveViewName(String viewName, Locale locale) throws Exception {
if (isTilesView(viewName)) {
return tilesResolver.resolveViewName(viewName, locale);
} else {
return jspResolver.resolveViewName(viewName, locale);
}
}
private boolean isTilesView(String viewName) {
.....
}
}
Вам необходимо реализовать метод isTilesView, чтобы решить, какому преобразователю делегировать.
В конфигурации XML определите этот новый распознаватель представлений и убедитесь, что он отображается перед другими.
<bean class="MyViewResolver">
<property name="tilesResolver" ref="tilesViewResolver"/>
<property name="jspResolver" ref="viewResolver"/>
</bean>