上下文参数值不是字符串

时间:2014-07-14 12:09:09

标签: java java-ee context-param

假设您编写了一个带有一些上下文参数的部署描述符,并且您希望其中一个成为对象,不幸的是我读到您只能在标记中添加字符串值。

有没有办法做到这一点?我理解了一个数据库的例子,因为你可以把查找名称。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   ....>
 <context-param>
   <param-name>foo</param-name>
   <param-value>new foo()</param-value>
 <servlet>
  <servlet-name>BeerParamTests</servlet-name>
  <servlet-class>TestInitParams</servlet-class>
  <init-param>
   <param-name>adminEmail</param-name>
   <param-value> likewecare@wikewdfs</param-value>
  </init-param>
 </servlet>
<servlet-mapping>
 <servlet-name>BeerParamTests</servlet-name>
 <url-pattern>/Tester.do</url-pattern>
</servlet-mapping>

2 个答案:

答案 0 :(得分:1)

<context-param>
   <param-name>foo</param-name>
   <param-value>new foo()</param-value>
</context-param>

这只会将new foo()存储为String

param-nameparam-value基于键值对。

用于检索存储为值的String的关键,不使用此类值,因为它只会返回String

String foo=getServletContext().getInitParameter("foo");//result : new foo()
  

假设您编写了一个带有某些上下文的部署描述符   参数,你希望其中一个是一个对象

没有。您无法将Object存储到部署描述符。仅允许String个参数。

答案 1 :(得分:1)

<context-param> <param-name>foo</param-name> <param-value>com.edu.Foo</param-value> </context-param>

在java代码中,请尝试以下

Class.forName(getServletContext().getInitParameter("foo")).newInstance();

但是您将只获得空对象而没有为属性分配任何值。它会对你有用吗?