整数获取默认值0,其中Java中需要为NULL

Ina*_*lla 11 jsf integer

我的要求看起来很简单,但我觉得我在代码中做错了.

我只需要在没有从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,这在我的业务逻辑中有不同的含义,请帮我做必要的代码更改.

Bal*_*usC 17

当我在inputText中输入任何内容时,则输入0表而不是null

这个问题可以被识别为Tomcat的EL解析器没有考虑到你正在使用Integer而不是int.您需要将以下VM参数添加到Tomcat启动选项:

-Dorg.apache.el.parser.COERCE_TO_ZERO=false
Run Code Online (Sandbox Code Playgroud)

也可以看看:


它解决了我的一半问题,现在它存储空值,但在检索时它再次显示0

这个问题可以被识别为使用ResultSet#getInt()而不是使用的JDBC ResultSet#getObject().然而,这与第一个问题基本上是不同的问题.您没有说明如何设置数据库访问层,因此很难指出具体的解决方案.


归档时间:

查看次数:

11311 次

最近记录:

12 年,10 月 前