我刚开始使用Spring。我遇到了很多教程。InternalResourceViewResolver
我看到了更多使用than的例子UrlBasedViewResolver
。我查看了 Spring 文档,但我无法弄清楚使用其中一个的好处。有人可以提供一些解释吗?
3 回答
InternalResourceViewResolver
是 的一个方便的子类UrlBasedViewResolver
。
JavaDoc 描述了一些InternalResourceViewResolver
在某些情况下可能有用的附加属性:
方便的 UrlBasedViewResolver 子类,支持InternalResourceView(即 Servlet 和 JSP)和 JstlView 等子类。
AlwaysInclude
:控制是否执行转发或包含。
ExposeContextBeansAsAttributes
: 允许上下文中的所有 bean 可用作请求属性,这意味着它们可以从 JSP 中的 EL 中引用。
ExposedContextBeanNames
:如果非空,则指定将公开的 bean 列表,而不是所有它们。
来源春季论坛:春季问答论坛
Spring 支持广泛的视图技术。ViewResolver 可以将任何已知的受支持视图技术插入您的应用程序。
UrlBasedViewResolver是一个简单的视图解析器,它通过将URL
模式匹配到相应的文件名来简单地解析不同技术的视图。
UrlBasedViewResolver
在这里支持“ AbstractUrlBasedView ”类型的所有视图技术。
AbstractJasperReportsView
, AbstractPdfStamperView
, AbstractTemplateView
, InternalResourceView
, RedirectView
, TilesView
,XsltView
是 的已知子类AbstractUrlBasedView
。
因此,当您使用时,UrlBasedViewResolver
您可以使用任何一个子类AbstractUrlBasedView
作为您的视图技术的类型(仅通过设置相应的 viewClass)。
InternalResourceViewResolver是UrlBasedViewResolver
.
但是当你使用InternalResourceViewResolver
,(它是 的一个方便的子类UrlBasedViewResolver
)时,你只能使用 type 的技术InternalResourceView
作为你的视图技术。
我认为这回答了你的问题。
InternalResourceViewResolver
实际上是 的子类UrlBasedViewResolver
。
UrlBasedViewResolver
- 视图名称直接解析为 URL。没有提供显式映射。视图名称将是 URL 本身,或者您可以根据您的设计添加prefix
或。suffix
您还可以前缀为“redirect:”和“forward:”来重定向和转发您的请求。
InternalResourceViewResolver
- 支持 InternalResourceView 的 UrlBasedViewResolver 的子类。包装 JSP 或同一 Web 应用程序的InternalResourceView
一些其他资源。您可以使用 EL 访问 JSP 中的模型。
注意:一些 URLBasedViewResolver(Tiles、Velocity、Freemarker)检查资源是否存在并返回 null。因此它们可以位于视图解析器链中的任何位置。其他必须在最后(JSTL/JSP、XSLT、JSON)
因此InternalResourceViewResolver
需要在视图解析器链中排在最后,因为无论实际资源是否存在,它都会解析视图名称。
其他一些 URLBasedViewReolver 是
- 内部资源视图解析器
- VelocityViewReolver
- FreeMarkerViewReolver
- ThymeleafViewResolver
- XsltViewReolver