【问题标题】:PrimeFaces SelectOneMenu: Empty String is submitted as nullPrimeFaces SelectOneMenu:空字符串提交为空
【发布时间】:2013-03-26 18:44:13
【问题描述】:

web.xml

[...]
<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>false</param-value>
</context-param>
[...]

view.xhtml

[...]
<p:selectOneMenu id="input1" value="#{myBean.value1}">
    <f:selectItem itemValue="" itemLabel="..." />
</p:selectOneMenu>

<p:inputText id="input2" value="#{myBean.value2}" />
[...]

MyBean.java

[...]
private String value1;
private String value2;
[...]

我将 input2 留空,提交表单并检查托管 bean 中的值:

  • value2 是一个空字符串 - 正如预期的那样!
  • value1 为空

为什么value1 为空而不是空字符串?如果我希望该值为空字符串,我该如何实现?

更新 “问题”在班级com.sun.faces.renderkit.html_basic.MenuRenderer

public Object getConvertedValue(...) {
    [...]
    if (RIConstants.NO_VALUE.equals(newValue)) {
        return null;
    }
    [...]
}

【问题讨论】:

    标签: java jsf primefaces


    【解决方案1】:

    你可以查看这个 JSF 2 - Bean Validation: validation failed -> empty values are replaced with last valid values from managed bean.

    如果您想将value1 设置为空字符串,那么您可以使用此代码。

    public Object getSubmittedValue() {
    if (submittedValue == null && !isValid() && considerEmptyStringNull(FacesContext.getCurrentInstance())) {
        return "";
    }
    else {
        return submittedValue;
    }
    

    }

    【讨论】:

    • 我不认为这是我的问题。我不使用任何验证器。
    猜你喜欢
    • 1970-01-01
    • 2019-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-30
    • 2020-10-01
    • 2014-11-12
    • 2015-09-16
    相关资源
    最近更新 更多