在JSP中使用JSTL是否需要指定SpringJstlView resolver?
Is it necessary to specify Spring JstlView resolver to use JSTL in JSP?
在Spring中使用InternalResourceViewResolver
时,是否需要将viewClass
指定为
org.springframework.web.servlet.view.JstlView
使用JSTL?因为没有指定它,我仍然能够在 JSP 中访问 JSTL 标签(我使用 <c:out/>
),没有任何异常或错误。
Spring 不了解 jstl,因为它不是 Spring 的一部分,这将作为 JSTL 的桥梁
从处理程序返回的视图名称将被转换为 JSP 资源(例如:"myView" -> "/WEB-INF/jsp/myView.jsp"),使用此视图 class 以启用 显式 JSTL 支持。
它还将公开 JSTL 特定的请求属性,使用 Spring 的语言环境和 MessageSource 为 JSTL 的格式和消息标记指定语言环境和资源包。
当您从资源文件(.properties 文件)加载属性时
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
指定的 MessageSource 从 class 路径中的 "messages.properties" 等文件加载消息。这将作为 JSTL 本地化上下文自动暴露给视图,JSTL fmt 标签(消息等)将使用它。
来源:JSTL View
我在看到
InternalResourceViewResolver and here
如果我们使用 InternalResourceViewResolver 解析视图并且 jstl jar 在 classpath.
中,则默认设置 JstlView class
因为没有指定我仍然可以访问 JSTL 标签:
-> 这是因为 InternalResourceViewResolver,在内部检查(在构造函数内部实例化期间)JSTL classes(特别是 javax.servlet.jsp.jstl.core.Config)是否存在于 class 路径和 spring 中class加载器可以加载成功。
因此,如果 class 存在并且可以加载,它将自动使用 JstlView 而不是 InternalResourceView。所有这一切只发生在它的默认构造函数中。
因此,您不需要特别告知使用 JstlView。它将被自动占用。
在您的情况下,它的 JSTL 配置 class 在 class 路径中可用,因此它正在工作。
在Spring中使用InternalResourceViewResolver
时,是否需要将viewClass
指定为
org.springframework.web.servlet.view.JstlView
使用JSTL?因为没有指定它,我仍然能够在 JSP 中访问 JSTL 标签(我使用 <c:out/>
),没有任何异常或错误。
Spring 不了解 jstl,因为它不是 Spring 的一部分,这将作为 JSTL 的桥梁 从处理程序返回的视图名称将被转换为 JSP 资源(例如:"myView" -> "/WEB-INF/jsp/myView.jsp"),使用此视图 class 以启用 显式 JSTL 支持。
它还将公开 JSTL 特定的请求属性,使用 Spring 的语言环境和 MessageSource 为 JSTL 的格式和消息标记指定语言环境和资源包。
当您从资源文件(.properties 文件)加载属性时
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename" value="messages"/>
</bean>
指定的 MessageSource 从 class 路径中的 "messages.properties" 等文件加载消息。这将作为 JSTL 本地化上下文自动暴露给视图,JSTL fmt 标签(消息等)将使用它。
来源:JSTL View
我在看到 InternalResourceViewResolver and here
如果我们使用 InternalResourceViewResolver 解析视图并且 jstl jar 在 classpath.
中,则默认设置 JstlView class因为没有指定我仍然可以访问 JSTL 标签:
-> 这是因为 InternalResourceViewResolver,在内部检查(在构造函数内部实例化期间)JSTL classes(特别是 javax.servlet.jsp.jstl.core.Config)是否存在于 class 路径和 spring 中class加载器可以加载成功。 因此,如果 class 存在并且可以加载,它将自动使用 JstlView 而不是 InternalResourceView。所有这一切只发生在它的默认构造函数中。
因此,您不需要特别告知使用 JstlView。它将被自动占用。 在您的情况下,它的 JSTL 配置 class 在 class 路径中可用,因此它正在工作。