2013-02-20 2 views
1

Я использую весной 3.0 и пытаюсь вливанием свойства сеттера для Map<String ,String>Spring свойство сеттер для карт исключения

Ниже представлена ​​списком конфигов и сеттер метод: конфигурация Spring, как показано ниже:

<bean name="geocoder" class="com.g1.component.igeocode.RemoteGeocoder" > 
     <property name="geocoderConverters"> 
      <map> 
       <entry key="Default" value="com.g1.component.igeocode.mapmarker.DefaultGeocoderConverter"/> 
       <entry key="4.8.1.51" value="com.g1.component.igeocode.mapmarker.GeocoderConverter_v4_8_1_51"/> 
      </map> 
     </property> 
</bean> 

RemoteGeocoder. Java

private Map<String, String> geocoderConverters; 

    public Map<String, String> getGeocoderConverters() { 
     return geocoderConverters; 
    } 

    public void setGeocoderConverters(Map<String, String> geocoderConverters) { 
     this.geocoderConverters = geocoderConverters; 
    } 

Но я получаю ниже ошибки во время выполнения:

Error creating bean with name 'geocoder' defined in URL [file:/E:/Spectrum code/Spectrum 7/cdqplatform/platform/server/dist/target/g1server/server/app/tmp/igeocode-global-7.0.car-1643772799809108204-contents/resourcestage-config.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are: 
    PropertyAccessException 1: org.springframework.beans.MethodInvocationException: Property 'geocoderConverters' threw exception; nested exception is java.lang.IllegalStateException: No Method invoker set on [email protected] 

Может кто-то прокомментировать это?

Спасибо.

+0

Попробуйте с 'Map ' вместо этого. –

+0

Я пробовал это, но это также не работает :( –

+0

Хммм, я знаю, что это может работать с 'setXXX (Map map)', '' и '' поэтому я подозреваю, что ваша проблема не связана с частью Spring. –

ответ

1

Попробуйте указать ключи и значения типа в String:

<property name="geocoderConverters"> 
    <map key-type="java.lang.String" value-type="java.lang.String" map-class="java.util.HashMap"> 
     <entry key="Default" value="com.g1.component.igeocode.mapmarker.DefaultGeocoderConverter"/> 
     <entry key="4.8.1.51" value="com.g1.component.igeocode.mapmarker.GeocoderConverter_v4_8_1_51"/> 
    </map> 
</property> 
+0

Я пробовал это, но все еще не работал. map как Map вместо Map , но все равно не выбираете его. Не знаете, какую весну ожидать в качестве сигнатуры метода setter для Maps. –

+0

Хорошо попробуйте изменить свою карту на HashMap и добавить «map-class =» java.util. HashMap " –

+0

Я пробовал следующие: \t \t \t \t \t \t <ввод ключа = "4.8.1.51" значение = "com.g1.component.igeocode.mapmarker.GeocoderConverter_v4_8_1_51"/> \t. Также изменилось свойство на HashMap. Пробовал различные перестановки, но все еще сталкивался с такой же проблемой :( –

Смежные вопросы