Многоэтапная форма мастера с несколькими <ui: include> и одним bean-объектом области запросов, как перейти к следующему шагу? - PullRequest
0 голосов
/ 14 февраля 2012

Мы работаем с JSF 2.0. На самом деле, мы переходим с JSF 1.2 на JSF 2.0. У меня есть форма на mainPage.xhtml, где мы включаем 3 формы по тегу <ui:include>.

Страница mainPage.xhtml выглядит как ниже,

    <c:if test="#{myManagedBean.stepRender eq 'firstPage'}">
        <ui:include src="/public/firstPage.xhtml"/>
    </c:if> 
    <c:if test="#{myManagedBean.stepRender eq 'secondPage'}">
        <ui:include src="/public/secondPage.xhtml"/>
    </c:if>
    <c:if test="#{myManagedBean.stepRender eq 'thirdPage'}">
        <ui:include src="/public/thirdPage.xhtml"/>
    </c:if> 

firstPage.xhtml имеет несколько полей ввода и одно <h:commandButton> с action="myManagedBean.continueStepOne".

secondPage.xhtml имеет несколько полей ввода и одно <h:commandButton> с action="myManagedBean.continueStepTwo".

thirdPage.xhtml также имеет несколько полей ввода и одно <h:commandButton> с action="myManagedBean.continueStepThree".

Я использовал только один компонент для всех включенных страниц и mainPage.xhtml страницу. Боб является областью запроса.

код класса бобов

public String continueStepOneAction(){
    == validation logic ==
    stepRender="secondPage";
    return "mainPage";

}

public String continueStepTwoAction(){
    == validation logic ==
    stepRender="thirdPage";
    return "mainPage";

}

Первоначально, когда я отправляю запрос на mainPage.xhtml, в зависимости от значения stepRender, он будет включать определенную страницу, которая изначально firstPage.xhtml.

Если мы введем данные и нажмем кнопку команды, то это вызовет действие continueStepOne. Если проверки пройдены успешно, значение stepRender изменяется. Если оно равно secondPage, то будет добавлена ​​страница secondPage.xhtml. И так далее для thirdPage.

Проблема в том, что с firstPage до secondPage вызов метода и навигация работают правильно, но в secondPage, когда мы нажимаем на командную кнопку, он вызывает только конструктор myManagedBean и он не вызывает метод continueStepThreeAction() в компоненте. Он перейдет к firstPage.xhtml, поскольку в значении stepRender по умолчанию установлено значение firstPage.

Я не могу понять, в чем проблема. Как я могу решить это?

1 Ответ

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

ваш управляемый бин находится в области запроса? Попробуйте передать его в область сеанса, объявив его как бин области действия сеанса.

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