2010-03-02 55 views
5

是否可以在同一个Web应用程序中一起使用InternalResourceViewResolver和BeanNameViewResolver?Spring和视图解析器

我的意思是InternalResourceViewResolver来解析我的jsp。

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp"/> 

而不是BeanNameViewResolver来解决我的Excel(我需要传递网址)。

再见。 谢谢

+0

我注意到新的Spring 3'p:xyz'语法越来越受到所有人的欢迎......我不喜欢我自己,我觉得它很混乱。也许我只是变老了。 – skaffman 2010-03-03 00:11:42

回答

3

是的,你可以结合多个解析器。 Spring迭代它们并使用能够解析给定名称的第一个解析器。您还可以在解析器中设置order属性以指定迭代顺序。

9

如果你喜欢,你可以在你的上下文中拥有尽可能多的视图解析器,Spring会一个接一个地检查它们,直到它解析视图。

有一个警告,虽然:

注意:当链接ViewResolvers,一个 InternalResourceViewResolver总是 需求是最后的,因为它会尝试 解决任何视图名称,无论 底层资源 是否确实存在。

这是servlet API的“缺陷”,因为InternalResourceViewResolver在实际尝试之前无法知道资源是否存在。

因此,请确保您的BeanNameViewResolverInternalResourceViewResolver之前定义,或明确指定每个属性的order属性。

+0

谢谢! 仅当我处于相同的servlet上下文中时,才需要订购属性。我的意思是,如果我有jsp的servlet上下文,我使用的是InternalResourceViewResolver,而另一个是使用BeanNameViewResolver的excel文件,我不需要使用该命令。 对不对?他们是独立的.. – andrew0007 2010-03-03 09:24:52

+0

是的。只有当它们处于相同的上下文中时,'order'属性才是必需的,*和*它们在文件中没有处于正确的物理顺序。 – skaffman 2010-03-03 09:44:21