У меня есть ManagedBean с областью действия сеанса, который вводит еще два компонента с областью действия сеанса, у них обоих есть свои правильные геттеры и сеттеры.
Мой класс выглядит следующим образом:
@ManagedBean(name="oneClass")
@SessionScoped
public class OneClassController implements Serializable {
@ManagedProperty(value="#{myOtherBean}")
public AnotherClass another;
@ManagedProperty(value="#{requestBean}")
public RequestClass request;
public String foo() {
another = getAnotherService(request);
return "page?faces-redirect=true";
}
//getters and setters for AnotherClass and RequestClass
}
Теперь класс запроса содержит все значения для запроса веб-службы. Эти значения заполняются в форме на странице xhtml.
Когда пользователь завершает заполнение запроса и запускает действие с кнопки, он входит в метод foo
. Отладка показывает запрос с правильными данными, и когда я его вызываю, another
заполняется правильно.
Теперь page.xhtml
выглядит так:
<h:outputText value="#{requestBean.agentId}" />
<h:outputText value="#{myOtherBean.name}" />
<h:outputText value="#{myOtherBean.lastname}" />
При рендеринге page
все значения из requestBean
отображаются правильно, но все значения anotherBean
отображаются пустыми. Даже обновление страницы не помогает.
Если я активирую кнопку в page.xhtml
, чтобы распечатать в методе действия значения из anotherBean
:
log.info("Another name: " + another.getName());
печатают нормально.
У меня в web.xml
установлен метод сохранения для сервера.
Кстати, это не настоящее соглашение об именах, которое я использую, но сейчас я нахожусь на другом компьютере без каких-либо IDE или JDK, поэтому я пытаюсь воспроизвести код как можно лучше.
Как я могу показать правильные значения в page
?
another = getAnotherService(request);
, если вы уже вводите его с помощью@ManagedProperty
? - person kolossus   schedule 16.05.2013