Исключение из веб-потока Spring - свойство не найдено - PullRequest
3 голосов
/ 24 января 2012

Я использую весенний поток, это мой поток

<view-state id="welcome">
    <transition on="emailEntered" to="checkEmail"></transition>
</view-state>
<decision-state id="checkEmail">
    <if test="alta.checkEmail(requestParameters.email)"
    then="okState"
    else="errorState"/>
</decision-state>
<view-state id="okState"/>
<view-state id="errorState"/>

Я включил автоматическое сканирование в моем контексте сервлета:

<context:component-scan base-package="com.me.myproj" />

Я получаю org.springframework.binding.expression.PropertyNotFoundException: свойство не найдено Ошибка для состояния checkEmail. Проблема в том, что он не распознает мой бин 'alta', это мой класс Alta (помещен в com.me.myproj):

@Component
public class Alta {
    public Alta(){
        System.out.println("constructor ok");
    }
    public boolean checkEmail(String email){

        return "my.name@email.com".equals(email);
    }

}

Если я явно создаю компонент:

<bean id="alta" class="com.me.myproj.Alta"/>

Тогда все работает нормально. Таким образом, кажется, что контекст потока не распознает автоматически сканируемые компоненты, хотя alta является экземпляром (как я видел, когда я отлаживал).

Что я могу сделать, чтобы избежать явного объявления всех бинов, участвующих в моем потоке?

Ответы [ 2 ]

0 голосов
/ 31 июля 2012

Когда вы явно создаете бин в XML, вы называете бин именем «alta» (значение id). Вот почему вы можете выполнять методы из класса Alta, ссылаясь на «alta.checkEmail (...)».

<bean id="alta" class="com.me.myproj.Alta"/>

Если вы хотите избежать объявления XML и использовать только аннотации, вы должны указать это имя в аннотации, просто передав имя в качестве аргумента [1]. Например:

@Component("alta")
public class Alta {
    public Alta(){
        System.out.println("constructor ok");
    }
    public boolean checkEmail(String email){

        return "my.name@email.com".equals(email);
    }
}

Надеюсь, это поможет.

[1] http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/stereotype/Component.html

0 голосов
/ 02 февраля 2012

Вы включили

<context:annotation-config/>  

в вашем servlet-context.xml?

...