JSF передает бин на страницу - PullRequest
1 голос
/ 29 марта 2012

Я создал небольшой своего рода контроллер, который в зависимости от входных данных мог бы посылать его на несколько страниц, каждый с различным компонентом поддержки.Я делаю это потому, что одна страница, которая принимает номер дела, проверяет этот номер дела и затем передает его на любое количество страниц, которым требуется действительный номер дела.

Вот моя страница caseSelector:

<h:form id="form1">
    <h:inputText value="#{caseSelectorBean.caseNumber}"/> 
    <h:inputHidden value="#{caseSelectorBean.nextPage}"/> 
    <h:commandButton action="#{caseSelectorBean.gotoNext}" value="submit"/> 
</h:form>

мой бин правильно проверяет номер регистра, заполняет бин для следующей страницы и перенаправляет его на эту страницу.

//CaseSelectorBean
public String gotoNext()  {
    logger.debug("In the caseChooser, going to xpage");
    logger.debug("caseNum=" + caseNumber);

    if(!validateCaseNumber(caseNumber)) {
        return "caseNotFound";
    }   

    if(nextPage.equals("page1")) {
        CaseDAO caseDAO = new CaseDAO();
        caseInfo = caseDAO.getCaseInfo(caseNumber);
        CaseInfoBean caseInfoBean = new CaseInfoBean();
        caseInfoBean.setCaseInfo(caseInfo);
        caseInfoBean.setCaseNumber(caseNumber);
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(
                    "caseInfoBean", caseInfoBean);

    }

    logger.debug("done with gotoNext(), returning " + nextPage);
    return nextPage;
}

проблема в том, что я пытаюсь получить доступ к бину со следующей страницы,оно пустое.Я могу видеть через конструктор, он создал новый вместо того, чтобы использовать в сессии.Как бы я заставил страницу использовать созданный ею компонент?

Спасибо!

1 Ответ

0 голосов
/ 29 марта 2012

ManagedProperty с #{param} работает только для bean-объектов в области запроса.Используйте f:viewParam для более широких областей:

<f:metadata>
  <f:viewParam name="caseNumber" value="#{caseSelectorBean.caseNumber}"/>
</f:metadata>

Тогда вам понадобится только простое свойство caseNumber с getter и setter в вашем bean-компоненте.

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