一问题描述:
postman向后端传参数时,a的值什么都没有写,但是在后端判断时,还是进入到if判断中,不填任何内容传递到后端的a到底是什么呢?
if(a!=null){
logger.info("a:{}",a);
}
经过在后端代码中打断点发现,在后端显示的a是一个空字符串而不是null,所以他会进入到上面的if判断中,而我们还需要做的就是判断他的长度是否>0
二解决:
判断a的大小或者使用hutol的StrUtil来进行判断
if(a!=null && a.length()!=0){
logger.info("判断一下a:{}",a);
}
if(StrUtil.isNotBlank(a)){
logger.info("判断a:{}",a);
}
查看源码可以知道StrUtil.isNotBlank()方法,可以看出来,他是根据StrUtil.isBank()的返回值来判断的,如果返回的是false证明他不为空
public static boolean isNotBlank(CharSequence str) {
return false == isBlank(str);
}
下面我们来看一下isBlank()方法。判断字符串是否为空,不仅要判断字符串是否为null,还要判断长度是否>0,,满足这两个条件才返回true,代表这个字符串是为空的。只要有一个是非空字符串就返回false
public static boolean isBlank(CharSequence str) {
int length;
if ((str == null) || ((length = str.length()) == 0)) {
return true;
}
for (int i = 0; i < length; i++) {
// 只要有一个非空字符即为非空字符串
if (false == CharUtil.isBlankChar(str.charAt(i))) {
return false;
}
}
return true;
}