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