1

web.xml

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

视图.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一片空白

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

更新 “问题”在课堂上com.sun.faces.renderkit.html_basic.MenuRenderer

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

1 回答 1

0

您可以检查此JSF 2 - Bean Validation: validation failed -> 空值被托管 bean 中的最后一个有效值替换。

如果要将其设置value1为空字符串,则可以使用此代码。

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

}

于 2013-04-05T04:53:20.853 回答