2

我的 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}" -> 

这是我的 xml 中的初始 bean 声明:

<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">

可能是什么问题呢?我在 pom.xml 中包含了 spring-core、spring-expression、spring-context。我没有通过代码进行任何配置;所有的配置都是通过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/

4

2 回答 2

6

确保您使用ApplicationContext而不是BeanFactory. BeanFactory不支持 的一些高级特性ApplicationContext,包括 Spring EL。

也可以看看:

于 2011-10-18T09:17:33.983 回答
1

对于简单的数字属性,您不需要表达式语言。数字到字符串的转换由默认属性编辑器处理。

<property name="age" value="4"/>
于 2011-10-18T09:12:41.310 回答