2013-04-04 39 views
1

的web.xmlPrimeFaces selectOneMenu用于:空字符串提交为空

[...] 
<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; 
    } 
    [...] 
} 

回答

0

,如果你想设置value1为空字符串,那么你可以使用此代码,您可以检查此 JSF 2 - Bean Validation: validation failed -> empty values are replaced with last valid values from managed bean.

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

}

+0

我不认为这是我的问题。我不使用任何验证器。 – Sebi 2013-04-05 06:28:08