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;
}
[...]
}
最佳答案
如果您想将value1
设置为空字符串,那么您可以使用此代码。
public Object getSubmittedValue() {
if (submittedValue == null && !isValid() && considerEmptyStringNull(FacesContext.getCurrentInstance())) {
return "";
}
else {
return submittedValue;
}
}
关于java - PrimeFaces SelectOneMenu : Empty String is submitted as null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15815499/