gpt4 book ai didi

string - h :inputText which is bound to String property is submitting empty string instead of null

转载 作者:行者123 更新时间:2023-11-28 21:44:21 26 4
gpt4 key购买 nike

我在 Tomcat 上有一个 JSF 2.0 应用程序,其中包含许多 <h:inputText>在我的数据库中输入数据的字段。有些字段不是必需的。

<h:inputText value="#{registerBean.user.phoneNumber}" id="phoneNumber">
<f:validateLength maximum="20" />
</h:inputText>

当用户将此字段留空时,JSF 设置空字符串 ""而不是 null .

如何在不检查每个字符串的情况下修复此行为

if (string.equals("")) { string = null; }

最佳答案

您可以配置 JSF 2.x 通过以下 context-param 将提交的空值解释为 null在web.xml (它有一个很长的名字,这也是我不记得它的原因;)):

<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>

供引用和感兴趣的人引用,在 JSF 1.2 中(因此不是 1.1 或更早版本,因为根据设计不可能为 Converter 设置 java.lang.String),可以使用以下 Converter 解决此问题:

public class EmptyToNullStringConverter implements Converter {

public Object getAsObject(FacesContext facesContext, UIComponent component, String submittedValue) {
if (submittedValue == null || submittedValue.isEmpty()) {
if (component instanceof EditableValueHolder) {
((EditableValueHolder) component).setSubmittedValue(null);
}

return null;
}

return submittedValue;
}

public String getAsString(FacesContext facesContext, UIComponent component, Object modelValue) {
return (modelValue == null) ? "" : modelValue.toString();
}

}

...需要在faces-config.xml中注册如下:

<converter>
<converter-for-class>java.lang.String</converter-for-class>
<converter-class>com.example.EmptyToNullStringConverter</converter-class>
</converter>

如果您还没有使用 Java 6,请替换 submittedValue.empty()通过 submittedValue.length() == 0 .

另见

关于string - h :inputText which is bound to String property is submitting empty string instead of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2203322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com