JSF 1.2 Управляемое наследование бина не работает - PullRequest
2 голосов
/ 26 мая 2011

Мы наследуем базовый компонент для всех наших управляемых компонентов. У бобов есть некоторые общие свойства, определенные в нем. Но мы не можем получить значение, установленное в базовом компоненте. В чем может быть проблема?

Вот как я определил.

BaseBean { 
    String msg; 
    // getter and setter
}

TestManagedBean extends BaseBean {         
    public String doAction() {
        setMsg("testMsg");     
        return "status" 
    } 
}

в jsp:

<h:outputText value="#{testManagedBean.msg}"/>   

1 Ответ

4 голосов
/ 26 мая 2011

Это должно работать просто отлично.Очевидно, вы обращаетесь к нему не в том экземпляре, или вы ожидаете, что изменения будут волшебным образом отражены от одного в другом экземпляре.

Сделайте базовый бин abstract class и убедитесь, что вы его не регистрируетекак <managed-bean>, но только сам реализующий класс (если вы все еще делаете это, то JSF выдаст ошибку при попытке создать экземпляр abstract class).Вы должны также ссылаться только на реализующий класс по EL на стороне представления.Т.е. не используйте #{baseBean.value}, а просто #{concreteBean.value}, иначе значение будет установлено в экземпляре базового компонента, а не в конкретном экземпляре компонента.Если у вас есть #{concreteBean.submit} как метод действия, значение будет таким же null.


Обновление : согласно вашему обновлению, хотя код не делаеткомпилировать, выглядит нормально.Проблема вызвана чем-то другим.Возможно, bean-компонент имеет область действия запроса, и у вас есть <redirect/> в случае навигации, из-за которого bean-объект был выделен и воссоздан по новому запросу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...