Не могу понять, как перенаправить в .xhtml с использованием простых лиц

1

У меня есть файл index.xhtml в папке WebContent, которая является моей главной страницей. Там я могу отправить некоторые данные контроллеру, который затем перенаправит файл list.xhtml, расположенный в WEB-INF/jsf/. list.xhtml находится в WEB-INF/jsf/, поэтому его нельзя было получить без отправки данных с индексной страницы.

В любом случае перенаправление из index.xhtml в list.xhtml отлично работает (<p:commandButton/> с действием на контроллер). Проблема заключается в переходе из списка.xhtml в index.xhtml. Независимо от того, что я делаю, это, похоже, не работает.

До сих пор я пробовал:

<h:button value="Go Back" outcome="index.xhtml"/> - кнопка greyed out с сообщением This button is disabled because a navigation case could not be matched. Предполагая, что, поскольку он ищет index.xhtml в WEB-INF/jsf/

<h:button value="Go Back" outcome="../../index.xhtml"/> - тот же результат, что и выше

<p:commandButton value="Go Back" action="#{listController.goBack}"/> и action="#{goBackController.goBack}" - с помощью метода goBack(), возвращающего то же самое, что и в исходных значениях в предыдущем Примеры

Если бы кто-нибудь мог подтолкнуть меня в правильном направлении, которое было бы высоко оценено.

Также я знаю, что веб-страницы не должны быть действительно в WEB-INF, но я не знаю, как еще скрыть страницу list.xhtml.

Теги:
jsf
primefaces
jsf-2
xhtml

1 ответ

4
Лучший ответ

Есть два вопроса о outcome которые вам нужно знать:

  1. Вы не можете использовать полное имя страницы с .xhtml как значение для outcome. Например, если имя страницы - Example.xhtml, правильным способом является outcome="Example".
  2. Предположим, что на данный момент вы находитесь на этой странице http://yourdomain.com/app/folder/Page1.xhtml, если вы нажмете на кнопку с outcome="Page2", вы прибудете на http://yourdomain.com/app/folder/Page2.xhtml. Вы не можете использовать ../ в outcome чтобы перейти к родительской папке.

Попробуй это:

<p:button value="Go back" href="../../index.xhtml" />

Если это не сработает, установите абсолютный путь в href чтобы выполнить задание.

  • 0
    Вы также можете добавить правило навигации вface-config следующим образом: <navigation-rule> <from-view-id>WEB-INF/jsf/list.xhtml</from-view-id> <navigation-case> <from-outcome>Index</from-outcome> <to-view-id>/index.xhtml</to-view-id> </navigation-case> </navigation-rule>
  • 0
    Спасибо! <p:button value="Go Back" href="index.xhtml" /> сработало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню