解决前端向后端传输空格的问题
Posted halulu.me
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决前端向后端传输空格的问题相关的知识,希望对你有一定的参考价值。
解决前端向后端传输空格的问题
前端向后端传输空格,会导致mybatis的判空失效
比如:
<sql id="mapSql">
<where>
<if test="map.name !=null and map.name != ''">
and name like "%"#{map.name}"%"
</if>
<if test="map.min !=null and map.min != ''">
and age >= #{map.min}
</if>
<if test="map.max !=null and map.max != ''">
and age <= #{map.max}
</if>
</where>
</sql>
这是因为空格也是有数值的,不是空字符串。
public static void main(String[] args) {
String str = " ";
System.out.println(str.length()); // 1
System.out.println(str != ""); // true
System.out.println(str != null); // true
}
前端的解决办法:
<input type="text" name="name" class="form-control" placeholder="搜索的名字" style="width: 120px;" value="${condition.name}"/>
<script>
$(".form-control").each(function () {
jQuery(this).change(function () {
jQuery(this).val(jQuery.trim(jQuery(this).val()));
})
})
</script>
后端的解决办法:
//使用 Java 正则表达式,去除两边空格。
public static String delSpace(String str) {
if (str == null) {
return null;
}
String regStartSpace = "^[ ]*";
String regEndSpace = "[ ]*$";
// 连续两个 replaceAll
// 第一个是去掉前端的空格, 第二个是去掉后端的空格
String strDelSpace = str.replaceAll(regStartSpace, "").replaceAll(regEndSpace, "");
return strDelSpace;
}
以上是关于解决前端向后端传输空格的问题的主要内容,如果未能解决你的问题,请参考以下文章