2015-10-22 3 views
0

Я пытаюсь передать эти аргументы вызову метода Calendar.add (Calendar.YEAR, -10) в конфигурации Spring. Как передать Calendar.YEAR, который фактически является int, но Spring config рассматривает его как String и генерирует ошибку.Метод настройки весны call to pass Calendar.YEAR

Это работает, если я позвоню без весны, как:

from = from.add(Calendar.YEAR, -10); 

Config:

<bean id="currCalendar" 
     class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetClass" value="java.util.Calendar"/> 
     <property name="staticMethod"> 
      <value>java.util.Calendar.getInstance</value> 
     </property> 
    </bean> 
    <bean id="from1" 
     class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
     <property name="targetObject"> 
     <ref local="currCalendar"/> 
     </property> 
     <property name="targetMethod" value="add"/> 
     <property name="arguments"> 

      <list> 
        <value type="int">currCalendar.YEAR</value> 
       <value type="int">-50</value> 
      </list> 
     </property> 
    </bean> 

Пожалуйста, подсказывают, как сделать в Spring

+0

На самом деле я попробовал этот # {} placeholder перед публикацией. Когда я пытаюсь использовать java-код для получения компонента с именем «code Calendar cal = (Calendar) factory.getApplicationContext(). GetBean (« from1 »); 'дает ошибку Null Exception – user5475461

ответ

1

Вы почти имели его, используйте #{} заполнитель:

<list> 
     <value type="int">#{currCalendar.YEAR}</value> 
     <value type="int">-50</value> 
</list> 
+0

На самом деле я попробовал этот # {} placeholder перед публикацией. Когда я пытаюсь использовать java-код для получения компонента с именем «code Calendar cal = (Calendar) factory.getApplicationContext(). GetBean (« from1 »); 'дает ошибку Null Exception. Похоже, что компонент не инициализирован. Нужно ли добавлять ссылку на пространство имен XML для заполнителя. – user5475461

+0

Нет такого компонента, который был бы назван «from1». Вы должны получить currCalendar вместо from1: «Календарь cal = (Календарь) factory.getApplicationContext(). GetBean (« currCalendar »);'. Обратите внимание, что второй метод MethodInvokingFactoryBean вызывает метод add в currCalendar. add() возвращает void, поэтому вы не создаете новый бит с именем «from1». – codependent

+0

Значит, это означает, что файл конфигурации необходимо изменить. Можете ли вы предложить, как будет выглядеть новый файл конфигурации без bean1 из списка – user5475461