У меня есть следующее простое выражение в моем 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/
Убедитесь, что вы используете ApplicationContext вместо BeanFactory.BeanFactory не поддерживает некоторые расширенные функции ApplicationContext, включая Spring EL.
ApplicationContext
BeanFactory
См. Также:
Для простого числового свойства вам не нужен язык выражений.Преобразование числа в строку обрабатывается редакторами свойств по умолчанию.
<property name="age" value="4"/>