2013-05-19 115 views
0

我正在開發一個使用spring 3的web應用程序。我使用tomcat 6作爲web容器。使用spring bean初始化java.util.ArrayList

在我的web.xml文件中,我將名爲applicationContext.xml的文件作爲彈簧定義文件進行綁定。

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>/WEB-INF/applicationContext.xml</param-value> 
</context-param> 

從applicationContext.xml文件我試圖初始化一個數組列表變量使用spring bean定義。即時在按照以下配置..(IM使用jidea)

<bean id="registationController" class="com.test.RegistrationController"> 
    <property name="registrationService" ref="registrationService"/> 
    <property name="validUrlsList" ref="myList"/> 
</bean> 

<util:list id="myList" value-type="java.lang.String"> 
    <value>10.1.200.104</value> 
    <value>10.1.200.205</value> 
</util:list> 

我已經加載的

xmlns:util="http://www.springframework.org/schema/util" 

命名空間,並且在RegistrationController.java類我已經產生用於validUrlsList getter和setter變量,jidea表明我的定義是正確的,並且我已經將我的可變參數巧妙地綁定到了bean定義。但是當我嘗試了代碼,它不會初始化validUrlList變量?它給出一個空值?我在這裏做錯了什麼?任何建議來解決這個問題?

java代碼如下。,,

private ArrayList validUrlsList;  
public void setValidUrlsList(ArrayList validUrlsList) { 
    this.validUrlsList = validUrlsList; 
} 

public ArrayList getValidUrlsList() { 
    return validUrlsList; 
} 

然後我通過只傳遞變量如下調用該方法getRemoteIp。

if (getRemoteIP(req, validUrlsList)) { 

- 問候,Rangana

+0

向我們展示您如何試用代碼。並向我們​​展示RegistrationController的代碼。哦,你的IDE的名字是IntelliJ IDEA。不是jidea。 –

+0

修改了添加java代碼的問題?我沒有使用過XmlBeanFactory,認爲它會在加載時初始化? –

+0

你怎麼知道Spring構造的列表是一個ArrayList?如果從你的XML構造的列表是一個LinkedList或者一個不可修改的列表,它怎麼能調用你的setter?代碼與接口。使用'列表'而不是'ArrayList '。 –

回答

1

util:list創造java.util.List例如,它不是說創造java.util.ArrayList

您應該

private ArrayList validUrlsList; 

改變你的聲明

private List validUrlsList; 

(和setter和getter以及)。

+0

通過改變java.util.List工作,但我不得不使變量靜態...私人靜態列表validUrlsList;只有這樣我才能正確地獲得清單。感謝您的大力支持。 :) –