我在Tomcat上有一个JSF 2.0应用程序,有很多<h:inputText>字段可以在我的数据库中输入数据.某些字段不是必需的.
<h:inputText value="#{registerBean.user.phoneNumber}" id="phoneNumber">
<f:validateLength maximum="20" />
</h:inputText>
Run Code Online (Sandbox Code Playgroud)
当用户将此字段留空时,JSF设置空字符串""而不是null.
如何在不检查每个String的情况下修复此行为
if (string.equals("")) { string = null; }
Run Code Online (Sandbox Code Playgroud) 我们h:inputText在一个绑定到Integer属性的JSF页面中使用a (因此可以接受null).当没有写入的值时h:inputText,表单提交的是0代替null.我们正在使用Trinidad 1.2.2和Tomcat 6.0.20(我们也尝试过Tomcat 6.0.14,因为我们读到这可能发生在某些Tomcat版本上).
这是怎么造成的,我该如何解决?
我的要求看起来很简单,但我觉得我在代码中做错了.
我只需要在没有从UI的InputText字段传递任何内容时在Oracle数据库中插入"null".
PaymantSpecFormPage.xhtml
<h:inputText id="startWeek" value="#{flowScope.paymentSpecVO.paymStartWk}" styleClass="inputTypeForm" maxlength="4"/>
Run Code Online (Sandbox Code Playgroud)
PaymentSpecVO.java
public class PaymentSpecVO extends BaseVO<PaymentSpec> {
private Integer paymStartWk;
public Integer getPaymStartWk() {
return paymStartWk;
}
public void setPaymStartWk(Integer paymStartWk) {
this.paymStartWk = paymStartWk;
}
}
Run Code Online (Sandbox Code Playgroud)
在我的数据库表中
COLUMN_NAME DATA_TYPE NULLABLE DEFAULT_VALUE
------------ --------- -------- -------------
PAYM_START_WK NUMBER(4,0) Yes null
Run Code Online (Sandbox Code Playgroud)
当我在inputText中没有输入任何内容时,那么在表格中输入0而不是null,这在我的业务逻辑中有不同的含义,请帮我做必要的代码更改.
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
在glassfish 4和wildfly 8 Final上不适用最新的Mojarra 2.2.5
Manfried Riem 说,我已经看到了关于此的多个错误报告,
确定这是一个EL问题,EL实现已经修复以解决这个问题
修复版本说2.2.5,它也在2.2.5的发行说明中说明,我错过了什么?
我已经从Java EE 6迁移到Java EE 7,现在使用JSF 2.2,上下文参数INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL似乎不起作用.在JSF 2.1中我将它设置为"true"并且它完美地工作,但现在我总是得到空字符串.
<context-param>
<param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
<param-value>true</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)
谁能说点什么呢?