1. 程式人生 > >資料庫欄位型別是Number,JSP介面傳過來空值的問題

資料庫欄位型別是Number,JSP介面傳過來空值的問題

在JSP介面中存在一個文字框,輸入的是金額,對輸入的欄位進行校驗virify="|PlusNumber&&|DotLength<4"。

也就是說在填寫的時候必須填寫正數,並且這個文字框不是必填,內容可為Null。在資料庫中這個欄位是number(20, 4)。於是出現了一個問題。

因為資料庫中儲存的是number型別的資料,所以在實體類中定義的型別是BigDecimal。此時,如果該文字框不填寫,那麼傳送過來的將是null或者""。

在實體類的set方法中,如果使用正常的。

    public void setXXX(BigDecimal value){

         this.xxx = value;

   }

那麼傳入的空字串是不能夠存入資料庫的,會報錯。 大概錯誤的意思:set方法不能將String型別的資料存入number格式的欄位中

解決方法,新增一個過載的set方法:

    public void setXXX(String value){

        if(value==null || value.equals("")){

            this.xxx = null;

        }else{

            this.xxx = new BigDecimal(value);

        }

    }

    同時,不能夠將原來的set方法,原因是在list介面進行查詢的時候,還需要使用原始的set方法,查詢出相應的資料。

    有時候,使用了方法過載,並不能解決這個問題。  因為呼叫set方法時,會出現java.nosuchMethod.exception這樣的異常,一直找不到。 在方法上沒有錯誤。此時

的解決方法:

    1.input.jsp介面,將對應欄位的名稱重寫,例如:name=tjudProtection.protectionFeeString(原來沒有String),value不變

    2.將過載的set方法也改名

    此時不存在方法名相同的問題,那麼根據struts2去呼叫方法時,會根據name去呼叫到改名後的set方法,不存在過載方法加載出錯的情況。 於是可以正常的進行下去。

而對於get方法,是不需要進行改變的。get方法的作用是從資料庫中去除資料,根據action中的請求傳送到jsp,接收時存放在value與實體類屬性相同的位置,不會出現位

置的錯誤,也能正常取值。

相關推薦

資料庫型別是NumberJSP介面過來的問題

在JSP介面中存在一個文字框,輸入的是金額,對輸入的欄位進行校驗virify="|PlusNumber&&|DotLength<4"。 也就是說在填寫的時候必須填寫正數,並且這個文字框不是必填,內容可為Null。在資料庫中這個欄位是number(20,

資料庫 型別 Number(n,m)

1 你看 number(4,3)是表示 這個數 一共有4位是有效位,後面的3 表示有3個是小數 也就是這個數 只能是1.234,這樣格式的 最大隻能是9.999, 2 number(3,4) 表示這個

在JAVA中把資料插入資料庫型別為DATA方法

方法1: /***********獲取系統當前時間***************/ Date nowTime = new Date(System.currentTimeMillis()); SimpleDateFormat bartDateFormat = new Si

解決在springboot+mybatis+postgresql時資料庫型別為json時如何與mybatis進行對映

pg 資料庫中 某欄位型別為jsonJava實體中對應型別是 jsonObject   private JSONObject info;在mybatis的xml中,常規無法直接進行對映,需要自己寫一個TypeHandler,自定義一個JSONTypeHandlerPg類具體程

ORACLE資料庫型別說明

型別 含義 儲存描述 備註 CHAR 固定長度字串 最大長度2000bytes   VARCHAR2 可變長度的字串,

MyBaits中列舉型別——在資料庫型別為字串、數字等非列舉型別情況下的使用

遇到的問題 當列舉型別的值型別為String時不管資料庫欄位型別是varchar還是其他字串型別總能成功轉換為相應的列舉型別,當是數字型別時有時可以有時不可以,主要原因是列舉型別轉換器的Handler實現導致的,詳見後面的討論。 為什麼要這麼設計? 因為是在處理遺留系統無法

【Mysql】型別datetimetimeStamptime的區別

author:咔咔 wechat:fangkangfk   datetime: 需要同時包含日期和時間資訊的值時。MySQL檢索並且以'YYYY-MM-DD HH:MM:SS'格式顯示DATETIME值,支援的範圍是'1000-01-01 00:00:00'到'9999

資料庫中欄型別Number(n,m)大概說明

number可以儲存浮點數,也可以儲存整數。Number(n,m) int型別只能存放整數。 a、number(4,3)是表示這個數一共有4位是有效位,後面的3表示有3個是小數也就是這個數,只能是1

oracle varchar2改成大型別clob讀取大內容

oracle varchar2(4000)改成大欄位型別clob,如果需要改成大欄位的varchar2列有內容,不能直接用 alter table med_generic modify option07 blob;直接用上面的會提示:ORA-22858: 資料型別的變更無效

資料庫存JSON何不弄張表行轉列

今天對專案進行優化,原有的資料庫中,有一張表A,裡面有個欄位,存了一段JSON格式配置引數,可能會很長。頁面端要對這個表進行展示和管理。那麼在管理這個欄位的時候就比較麻煩了,要把JSON轉成List放到頁面遍歷,儲存時再轉成JSON。楊老提出說搞一張表,同一個主鍵對就多個J

資料庫型別

一:Microsoft Access 資料型別     Text            用於文字或文字與數字的組合。最多 255 個字元。        Memo            Memo 用於更大數量的文字。最多儲存 65,536 個字元。       Byte 

資料庫工作筆記010---Mysql中用SQL增加、刪除修改名、型別、註釋調整順序總結

  JAVA技術交流QQ群:170933152   Mysql中用SQL增加、刪除欄位,修改欄位名、欄位型別、註釋,調整欄位順序總結   在網站重構中,通常會進行資料結構的修改,所以新增,刪除,增加mysql表的欄位是難免的,有時為了方便,還會增加

java生成mysql資料庫建表語句、型別註釋可實現不用mysqldump備份資料庫

使用 mysqldump 備份資料庫也是可行的,因為每次備份的時候都需要mysqldump這個檔案, 我在windows備份時沒問題,但是放到linux上面時,centos系統死活不認這個檔案,但又不想裝mysql,一氣之下自己研究了個不需要mysqldump就可以備份的程式, 如果看了以下程式

oracle資料庫型別不一致導致查詢慢

最近一個WEBSERVICE突然變慢了,後查詢發現,後臺查詢也非常慢(記錄條數800多萬),索引也有,如下語句 SELECT P.ID,P.RECORD_ID,P.KEY_NAME,P.KEY_CONTENT                      FROM MED_E

獲取通過sql查詢資料庫的表主鍵自增型別等資訊

                1.查詢所有表,以及表的備註資訊。 Oracle資料庫   select t

潭州課堂25班:Ph201805201 django框架 第七課 常用 型別及引數關係表的實現表關係物件add,create的方法 (課堂筆記)

    寫個類,建立表格   執行命令生成檔案 提交,在資料庫中建立  進入資料庫檢視   對資料進行修改操作    只有用到 save() 才能觸發 updaer_time 的更改,

批量替換資料庫指定部分資料如:更換圖片URL裡的域名。

問題:原來表字段url裡的值“http://www.baidu.com/0001.jpg”格式,要修改成“http://www.zuoniu.com/0001.jpg”格式; 原來表是: number       &nbs

【規範建議】服務端介面返回型別與iOS端的解析

一、本文件的寫作目的   App需要跟產品、UI、後臺、伺服器、測試打交道,app的產出是其他端人員產出的綜合體現。與其他端人員溝通就像是開發寫介面,也就是面向介面程式設計的思想。   本文件講解針對的是服務端返回資料時使用的欄位資料型別如何選擇、iOS端將JSON資料轉模型的時候用什麼型別來定義對應的屬

laravel中的資料遷移表結構型別定義整理

laravel中的資料遷移表結構,欄位型別,定義整理 /* 表引擎 */ $table->engine = 'InnoDB'; /* 類型別 */ // - 數字 $table->bigInteger('id'); $t