Мы работаем с 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
.
Я не могу понять, в чем проблема. Как я могу решить это?