跳过侦听器界面如下:
public interface SkipListener<T,S> extends StepListener {
void onSkipInRead(Throwable t);
void onSkipInProcess(T item, Throwable t);
void onSkipInWrite(S item, Throwable t);
}
此界面最适用于记录跳过的项目和错误。
是否可以获取输入中跳过项目的编号。对于例如如果输入中的第10个项目被跳过,我应该能够记录“项目编号10被跳过!”通过上面的倾听者。
我需要这个,因为我输入的文件中行没有任何识别键。因此,只需注销该项目,就无法将项目本身固定在文件中。
如果不是文件,输入是数据库表怎么办?是否有可能获得跳过项目的位置编号?
我的bean有三个属性,一个,两个和三个(所有字符串),其中通过适当的行映射器从文件中读取输入,然后在一些处理之后数据库表被加载数据。
以下是处理器的代码块:
if(two.charAt(4) == '_')
{ // do some processing }
显然,如果字段2从上面的文件中变为空,则会抛出“字符串索引超出绑定的异常”并将被跳过。
所以,在skip listener中,我想要的是有关抛出错误的列的信息。
这里因为名为two的字段给出了错误,我想要在跳过侦听器中登录的信息就像“属性一丢错”字符串索引超出绑定异常“在行号10”或者如果可能的话,甚至更具体“属性1在第10行中是空的,这对于不了解java术语的业务更有意义。
希望我明白我的怀疑。感谢阅读!
答案 0 :(得分:1)
情景1
要获取跳过的项目的行号,请阅读文件,您可以:
要获取跳过的项目的行号,请阅读表格,您可以:
场景2
请参阅方案1并在处理器中添加try / catch块,以便抛出自己的异常,例如:有关财产状况的信息,或以类似的方式改变步骤背景