Команда CommandFutton PrimeFaces не выполняет навигацию или обновление - PullRequest
40 голосов
/ 09 января 2011

Я использую Primefaces, чтобы сделать мое приложение немного красивее. Я заметил, что p:commandButton и h:commandButton не работают одинаково.

p:commandButton вызывает метод, и больше ничего не происходит. h:commandButton вызывает метод и возвращает навигацию.

У меня проблема с перенаправлением после нажатия кнопки входа в систему при использовании p:commandButton. Как с этим бороться?


У меня есть параметр обновления:

<p:commandButton value="Login" action="#{login.login}" type="submit" update="msgs" />

Ответы [ 6 ]

51 голосов
/ 09 января 2011

<p:commandButton> для корректной работы необходимо одно из следующих действий:

  • атрибут update для списка идентификаторов компонентов для повторного рендеринга (для запросов AJAX)
  • атрибут ajax="false", чтобы сделать обычную отправку без AJAX.

Если у вас нет ни одного, кнопка по умолчанию выполняет запрос AJAX без обратной связи с пользовательским интерфейсом.

Кроме того, у меня были проблемы с тем, что ни один из вариантов не работал, когда окружающий <h:form> имел атрибут enctype.

31 голосов
/ 03 мая 2011

Я думаю, что такое Кагатай-Мент:

не перемещается по странице:

<p:commandButton action="home.xhtml" value="Go Home"/>

Работает (перенаправляет страницу):

<p:commandButton action="home.xhtml?faces-redirect=true" value="Go Home"/>

Работает (перенаправляет страницу)

<p:commandButton action="home?faces-redirect=true" value="Go Home"/>

, если .xhtml - это ваш постфикс по умолчанию, определенный в web.xml:

<context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>

Дополнительную информацию можно найти на форуме Primefaces, например, в это обсуждение навигации

Надеюсь, это немного помогло ...

8 голосов
/ 09 января 2011

Вы должны использовать перенаправление, если вы выполняете навигацию и запрос выполняется с помощью ajax.

4 голосов
/ 05 июля 2012

У меня похожая проблема.

Я использую Primeface и Primefaces для мобильных устройств, и навигация в Firefox завершается ошибкой при использовании <p:commandButton> с ajax = "false" и action = "find.xhtml ?face-redirect = true".

Единственный способ заставить его работать и в Firefox - это использовать <h:commandButton>:

<h:commandButton value="#{msg.find}" process="find" 
                     action="find.xhtml?faces-redirect=true" />
0 голосов
/ 11 ноября 2018
<h:commandButton 
                             styleClass="btn btn-primary-active upgrade" data-dismiss="modal" 
                             value="Upgrade Account" 
                             action="profile.do?faces-redirect=true&amp;tab=plan" 
                             oncomplete="$('#freeGiftModal').hide();" process="@this" partialSubmit="true" immediate="true"/>

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

0 голосов
/ 25 апреля 2018

Ни одно из вышеперечисленных решений не работает для меня.Вы все еще можете пойти на простой JavaScript

<p:commandButton onclick="window.location.href =home.xhtml"
                    style="height: 20px" type="button" title="title" icon="ui-icon-transferthick-e-w"/>
...