web.xml 初始化参数超过一个参数值
web.xml init params more than one param-value
请问是否可以在
中添加多个param-value
<param-value>
标签?
例如:
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext, org.springframework.web.context.support.XmlWebApplicationContext</param-value>
</init-param>
谢谢!
你做的是正确的,应该用逗号,
分隔作为分隔符
<context-param>
<param-name>contextClass</param-name>
<param-value>ex1.com,ex2.com,.....</param-value>
</context-param>
或者您可以像下面这样放置它们以使其更具可读性,
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
org.springframework.web.context.support.XmlWebApplicationContext
</param-value>
</context-param>
应该按预期工作
您可以在 <param-value>
中使用多个值,但前提是方法可以接受值数组。
示例 1:
<init-param>
<param-name>suffixExclusions</param-name>
<param-value>.jsp, .ftl</param-value>
</init-param>
它工作正常,因为可以有很多参数。
示例 2:
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true, false</param-value>
</init-param>
将是一个例外:
org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'boolean' for property 'forceEncoding'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [true, false]
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:480)
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:512)
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1120)
原因方法只需要一个布尔值。
UPD
根据 documentation 预计参数 contextClass
中只有一个 class
这取决于参数。读取该值的代码可以按照他们喜欢的任何方式对其进行解析。这意味着你没有办法说 "I want to pass multiple values" 也没有标准。
Spring 不支持多个 class 作为 contextClass
。此 class 用于构建应用程序上下文,而 Java class 始终只能有一个具体类型。如果您不指定参数,Spring 将使用 XmlWebApplicationContext
作为默认值。如果您使用带注释的 Java 配置,那么您需要将其替换为 org.springframework.web.context.support.AnnotationConfigWebApplicationContext
.
配置Spring的classes需要用contextConfigLocation
指定,它采用文件列表(逗号and/or space分隔)或class 名字。
详情见文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-java-instantiating-container-web and http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html
请问是否可以在
中添加多个param-value<param-value>
标签?
例如:
<init-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext, org.springframework.web.context.support.XmlWebApplicationContext</param-value>
</init-param>
谢谢!
你做的是正确的,应该用逗号,
分隔作为分隔符
<context-param>
<param-name>contextClass</param-name>
<param-value>ex1.com,ex2.com,.....</param-value>
</context-param>
或者您可以像下面这样放置它们以使其更具可读性,
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
org.springframework.web.context.support.XmlWebApplicationContext
</param-value>
</context-param>
应该按预期工作
您可以在 <param-value>
中使用多个值,但前提是方法可以接受值数组。
示例 1:
<init-param>
<param-name>suffixExclusions</param-name>
<param-value>.jsp, .ftl</param-value>
</init-param>
它工作正常,因为可以有很多参数。
示例 2:
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true, false</param-value>
</init-param>
将是一个例外:
org.springframework.beans.TypeMismatchException: Failed to convert property value of type 'java.lang.String' to required type 'boolean' for property 'forceEncoding'; nested exception is java.lang.IllegalArgumentException: Invalid boolean value [true, false]
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.convertIfNecessary(BeanWrapperImpl.java:480)
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:512)
[INFO] [talledLocalContainer] at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1120)
原因方法只需要一个布尔值。
UPD
根据 documentation 预计参数 contextClass
这取决于参数。读取该值的代码可以按照他们喜欢的任何方式对其进行解析。这意味着你没有办法说 "I want to pass multiple values" 也没有标准。
Spring 不支持多个 class 作为 contextClass
。此 class 用于构建应用程序上下文,而 Java class 始终只能有一个具体类型。如果您不指定参数,Spring 将使用 XmlWebApplicationContext
作为默认值。如果您使用带注释的 Java 配置,那么您需要将其替换为 org.springframework.web.context.support.AnnotationConfigWebApplicationContext
.
配置Spring的classes需要用contextConfigLocation
指定,它采用文件列表(逗号and/or space分隔)或class 名字。
详情见文档:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-java-instantiating-container-web and http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html