2 回答

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊
我沒有使用過 Spring Batch,但查看FieldSet Interface 規(guī)范,似乎有一些替代方法可以實(shí)現(xiàn)您想要的目標(biāo)。
然而, Spring?Batch 參考確實(shí)提到了一些容錯(cuò)能力,特別是當(dāng)值不存在時(shí)拋出異常。為了禁用此功能,您需要將 strict 設(shè)置為false
tokenizer.setStrict(false);
否則,您可以簡(jiǎn)單地嘗試一些舊的時(shí)尚替代方案,例如不要嘗試將值直接讀入 an?int
,只需將其讀入 String ,然后在將其轉(zhuǎn)換為 String 之前驗(yàn)證該 Stringint
String empNo = fieldSet.readString("EMPNO");
if ((empNo == null) || (empNo.equals(""))) {
? empNo = "0";
}
int i = Integer.valueOf(empNo);
如果字段不為空且不是字符串,您可能仍然會(huì)得到一個(gè)java.lang.NumberFormatException,所以就我個(gè)人而言,我會(huì)通過處理異常來解決問題:
int myEmp = 0;
try {
? myEmp = fieldSet.readInt("EMPNO");
} catch (NumberFormatException nfe) {
? myEmp = 0;
}
也許不是那么雄辯,但它會(huì)起作用并達(dá)到目的。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以創(chuàng)建自己的行映射器實(shí)現(xiàn),并檢查子字符串是否為空,并將其替換為零,然后向前傳遞該行。
添加回答
舉報(bào)