Простое Spring EL выражение не работает;с ошибкой TypeMismatchException - PullRequest
2 голосов
/ 18 октября 2011

У меня есть следующее простое выражение в моем application-context.xml:

<bean id="instrument" class="com.ustunozgur.Instrument" init-method="initialize" scope="prototype">
<property name="age" value="#{4}"/>
<property name="name" value="Violin"/>

Класс Instrument - это простой POJO.Однако он выдает следующую ошибку:

[ERROR] ...nested exception is org.springframework.beans.TypeMismatchException: 
Failed     to convert property value of type 'java.lang.String' to required type
'int'   for      property 'age'; nested exception is java.lang.NumberFormatException: For input string:
"{4}" -> 

Вот исходное объявление bean-компонента в моем xml:

<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">

В чем может быть проблема?Я включил spring-core, spring-expression, spring-context в мой pom.xml.Я не делаю никакой конфигурации с помощью кода;вся конфигурация выполняется с помощью xml.

PS: это приложение командной строки, может ли оно быть виновником?

PPS: хотя следующий код работает, поэтому кажется, что только вXML игнорируется:

  ExpressionParser parser = new SpelExpressionParser();
  Expression exp = parser.parseExpression("'Hello World'");
  String message = (String) exp.getValue();

Вот мои полные application-context.xml и pom.xml: http://paste.pocoo.org/show/494260/ и http://paste.pocoo.org/show/494262/

Ответы [ 2 ]

6 голосов
/ 18 октября 2011

Убедитесь, что вы используете ApplicationContext вместо BeanFactory.BeanFactory не поддерживает некоторые расширенные функции ApplicationContext, включая Spring EL.

См. Также:

1 голос
/ 18 октября 2011

Для простого числового свойства вам не нужен язык выражений.Преобразование числа в строку обрабатывается редакторами свойств по умолчанию.

<property name="age" value="4"/>
...