问题场景:调用WebService服务传递参数的时候,报出了org.apache.cxf.interceptor.Fault: For input string: "null"这个错误,使用StringUtils.isBlank(xxx)也无法过滤这个null,当时我是百思不得其解,我也明白前面传递过来的参数是可能为空的,我也做了为空判断,为什么不行呢?
问题解决:经过长时间思考后,灵感突然来了,我把关注点放在了这个string上,会不会我的这个null不是null,而是成为了字符串"null"?于是我把为空判断改成了"null".equals(xxx),程序运行通过。
问题原因:经过分析,原因是我传递参数时是通过字符串拼接传递的,参数正常时没有关系,参数为null时,传递过来的将不再是null,而是字符串"null",即拼接时null会被转化为字符串"null",因此,在判断时应当使用字符串"null"进行比较,而不是使用null类型进行比较。