использование javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL приводит к тому, что viewParam будет нулевым - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь переключить приложение с WildFly 13 (Java EE 7, JSF 2.2.15) на WildFly 16 (Java EE 8, JSF 2.3.9).Пробовал оба PrimeFaces 6.2 и 7.0

В web.xml javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL установлено.Версия JSF 2.2 работает нормально, переключение на WildFly 16 это другое поведение.Ниже приведен простой пример:

Инструкции: доступ: http://localhost:8080/primefaces-test/?tipo=U&test=Bah нажмите первую кнопку, нажмите вторую кнопку.после ajax значение viewParam в бине является нулевым, даже если оно заполнено в URL.

Пример проекта (Jetty): https://github.com/erickdeoliveiraleal/primefaces-test/tree/update

XHTML

 <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:h="http://java.sun.com/jsf/html">
<f:metadata>

    <f:viewParam name="test" value="#{testView.testString}" />
    <f:viewAction action="#{testView.inicializar}" />

</f:metadata>
<h:head>
    <title>PrimeFaces Test</title>
</h:head>
<h:body>

    <h:form id="cadastro">
        <h:commandButton value="click me"
            action="#{testView.inserirNaLista()}">
            <f:ajax execute="@form" render="@form" />
        </h:commandButton>
        <p:commandButton
            value="click me - 2 (this button causes the null value)"
            action="#{testView.inserirNaLista()}" />

    </h:form>


</h:body>
</html>

Боб

@ManagedBean(name = "testView")
@ViewScoped
public class TestView implements Serializable {
    private String testString;

    public void inicializar() {
        System.out.println("initializing: " + testString);

    }

    public void inserirNaLista() {
        System.out.println(testString);
    }

    public String getTestString() {
        return testString;
    }

    public void setTestString(String testString) {
        this.testString = testString;
    }

}
...