JSF ViewParam Обязательный +AJAX разрывает страницу

Когда я нажимаю командную кнопку на странице ниже, навигация не выполняется. (Нажатие на кнопку обновляет страницу, удаляет параметр URL и отображает требуемое сообщение об ошибке вместо перехода на страницу индекса)

Однако, если я удаляю обязательный атрибут ИЛИ удаляю тег f:ajax, навигация работает нормально.

Использование com.sun.faces JSF 2.1.13 и простых лиц 3.4.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets">

<h:head></h:head>

 <f:metadata>
        <f:viewParam name="product"
            required="true" requiredMessage="Bad request. Please use a link from within the system."/>
    </f:metadata>

<body>

    <h:form id="form">
        <h:selectBooleanCheckbox>
            <f:ajax update="form" />
        </h:selectBooleanCheckbox>
        <h:commandButton value="buy" action="/index.xhtml?faces-redirect=true" />
    </h:form>

</body>
</html>

1 ответ

Решение

Я предполагаю, что update="form" это небрежное упрощение и что вы на самом деле хотели использовать render="@form" и перепутал это с PrimeFaces или около того.

Возвращаясь к конкретной проблеме, это вызвано выполнением обратной передачи без Ajax, которая также запускает обработку параметров представления.

Либо сделайте это обязательным только при отсутствии обратной передачи (хотя убедитесь, что bean-объект имеет область видимости),

<f:viewParam ... required="#{not facesContext.postback}" />

или передать его на постбэк

<h:commandButton ...>
    <f:param name="product" value="#{bean.product}" />
</h:commandButton>

или используйте OmniFaces<o:viewParam> вместо этого, если вы уже используете bean-объект вида. Он не будет обрабатывать параметр представления для обратных передач.

<... xmlns:o="http://omnifaces.org/ui">
...
<o:viewParam ... />
Другие вопросы по тегам