Ошибка в использовании языка выражений в Spring
Не удалось преобразовать значение свойства типа [java.lang.String] в требуемый тип [com.spring.first.Item] для свойства 'item'; вложенное исключение - java.lang.IllegalArgumentException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [com.spring.first.Item] для свойства item: не найдено подходящих редакторов или стратегии преобразования
server.java
package com.spring.first;
public class Server {
private Item item;
private String itemName;
public Item getItem()
{
return item;
}
public String getItemName()
{
return itemName;
}
public void setItem(Item item)
{
this.item=item;
}
public void setItemName(String str)
{
this.itemName=str;
}
@Override
public String toString()
{
return "Server [item ="+item+", itemName ="+itemName+"]";
}
}
Item.java
public class Item {
private String name;
private int qty;
public String getName()
{
return name;
}
public int getQty()
{
return qty;
}
public void setName(String name)
{
this.name=name;
}
public void setQty(int x)
{
this.qty=x;
}
@Override
public String toString()
{
return "Item [ name ="+name+", Qty ="+qty+"];";
}
}
Мой конфигурационный файл
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="itemBean" class="com.spring.first.Item">
<property name="name" value="itemA" />
<property name="qty" value="10" />
</bean>
<bean id="serverBean" class="com.spring.first.Server">
<property name="item" value="#{itemBean}" />
<property name="itemName" value="#{itemBean.name}" />
</bean>
</beans>
Я использую Spring 2.5.6.
2 ответа
Spring Exression Language (SPEL) был введен в Spring 3 (см. Новые функции, представленные в Spring 3), поэтому использование SPEL с Spring 2.5.6 невозможно.
Вам нужно будет обновить версию Spring как минимум до 3 (лучшей будет последняя версия, которая в настоящее время является 4.2.2). Конфигурация, как у вас, является правильной и будет работать ( см. Ссылку SPEL).
Попробуйте изменить файл конфигурации следующим образом
<bean id="itemBean" class="com.spring.first.Item">
<property name="name" value="itemA" />
<property name="qty" value="10" />
</bean>
<bean id="serverBean" class="com.spring.first.Server">
<property name="item" ref="itemBean" />
<property name="itemName" value="itemBean.name" />
</bean>