使用javax.faces.interpret_empty_string_submitty_values_as_null



我正在尝试将一个应用程序从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之后,bean中的ViewParam值为NULL,即使在URL中填充。

示例项目(码头):https://github.com/erickdeoliveiraleal/primefaces-test/tree/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>

bean

@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;
    }
}

wildfly 21 https://github.com/eclipse-ee4j/mojarra/mojarra/issues/4550,仍在eclipse-ee4j

中仍在官方发布

最新更新