一些解释,我在这里阅读文档: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/view/BeanNameViewResolver.html需要约BeanNameViewResolver
,但我认为,春天文件有时会变得非常复杂,很难理解,所以我需要这个类一点解释。
一些解释,我在这里阅读文档: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/web/servlet/view/BeanNameViewResolver.html需要约BeanNameViewResolver
,但我认为,春天文件有时会变得非常复杂,很难理解,所以我需要这个类一点解释。
如文档中所述,BeanNameViewResolver
决议将View
声明为bean。通常你需要它来获得一些特殊用途的视图。
想象一下,例如,您的一个控制器应呈现Excel电子表格。所以,你继承AbstractExcelView
和基于模型值实现自定义的逻辑来呈现一个电子表格:
public class MyExcelView extends AbstractExcelView { ... }
,并宣布它作为一个bean:
<bean id = "myExcelView" class = "MyExcelView" />
然后宣布的BeanNameViewResolver
使其可供控制器:当控制器返回ModelAndView
且视图名称myExcelView
时,将会呈现您的电子表格。
BeanNameViewResolver
通常一起使用,用于处理“普通”视图一些其他视图解析器(这样,如果BeanNameViewResolver
无法取景,其他解析器试图找到它):
<bean class = "...BeanNameViewResolver">
<property name = "order" value = "0" />
</bean>
<bean class = "...InternalResourceViewResolver">
<property name = "order" value = "1" />
...
</bean>
事实上该文件并不是太棒了。
Spring MVC中的视图解析器是一个从视图名称转换为视图的bean。
视图名称是简单的字符串。它由ModelAndView对象内的控制器的handleRequest()方法返回。
ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
....
return ModelAndView("thisIsTheViewName", ...);
}
这个视图名称解析由视图解析器实际视图类。
BeanNameViewResolver有一个简单的工作:它在applicationContext中查找具有此视图名称作为其id的视图bean。
<bean id="thisIsTheViewName" class="....MyView" />
对于简单的应用程序,这可以是从视图名称转换到视图的最简单方法。
为+1比我快,并有一些细节,我blob没有:) –
+1的很好的解释。几个问题:1)beannameviewresolver是否需要线程安全? 2)internalresourceviewresolver线程安全吗? – shrini1000
很好的解释 – Krishna