2014-03-07 33 views
1

對於我的測試bean地圖屬性沒有正確設置,空值正在設置,我發現調試。 其實這個bean有3個屬性,其中一個屬性是一個Map,其餘的都是簡單的鍵值對。 問題是,spring正確設置了3個屬性(from,html),但沒有設置Map屬性(「to」)。 下面是我試過的代碼和解決方案。 EmailInfo類的「to」屬性設置爲null。春季地圖屬性值設置不正確

我已經將這些常量保存在屬性文件中並且已經使用了PropertyPlaceholderConfigurer

我相信屬性文件沒有問題,因爲「from」屬性設置的是正確的值。

<bean id="Info" 
    class="com.src.framework.EmailInfo" 
    scope="prototype"> 
    <property name="to"> 
     <!-- <map> 
      <entry key="DEV" value="${email.dev}" /> 
     </map> --> 
     <util:map map-class="java.util.HashMap"> 
      <entry key="DEV" value="${email.dev}"/> 
     </util:map> 
    </property> 
    <property name="from" value="${email.sender}" /> 
    <property name="html" value="true" /> 
</bean> 

EmailInfo

public class EmailInfo { 

private boolean html; 

private Map<String, String[]> to; 

private String from;  

public boolean isHtml() { 
    return this.html; 
} 
public void setHtml(boolean argHtml) { 
    this.html = argHtml; 
} 
public Map<String, String[]> getTo() { 
    return this.to; 
} 
public void setTo(Map<String, String[]> argTo) { 
    this.to = argTo; 
} 
public String getFrom() { 
    return this.from; 
} 
public void setFrom(String argFrom) { 
    this.from = argFrom; 
} 
} 

請提供您的建議是我在做什麼錯在這裏,以及如何糾正它。

+0

是'to'一個'地圖'? – 2014-03-07 09:02:29

+0

lutz「to」是代碼 – vikeng21

回答

0

嘗試將地圖的簽名更改爲Map<String,String>,因爲它看起來像在地圖中沒有適當的類型,您希望將其放入xml中。

但是,當你想有工作的情況下與Map<String,String[]>你必須改變你的XML

<util:list id="myList"> 
     <value>foo</value> 
     <value>bar</value> 
    </util:list> 
    <util:map> 
     <entry key="DEV" value="myList"/> 
    </util:map> 
+0

中的Map 謝謝Rafik991。嘗試了你的建議後,我得到了以下錯誤。導致:org.xml.sax.SAXParseException:cvc-complex-type.2.4.d:找到以元素'util:map'開頭的無效內容。預計在這一點上不會有子元素。 \t在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195) \t在com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper。 java:131) 不允許將簽名更改爲jar文件中的代碼 – vikeng21

+0

嘗試重新聲明您的地圖並再次閱讀我的文章:)我做了一些更改。 – RMachnik

+0

謝謝Rafik991。但是,這並沒有再次得到同樣的例外。我無法更改EmailInfo類的簽名,因爲它給了我一個jar: – vikeng21