解决前端向后端传输空格的问题

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 &lt;= #{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;
    }

以上是关于解决前端向后端传输空格的问题的主要内容,如果未能解决你的问题,请参考以下文章

解决base64通过http传输后+变空格的问题

前端向后端传一个json数组对象

前端加密,后端解密的过程及代码(密码明文传输解决,不是太保险。key在前端有显示)

前端向后端发送请求,后端返回的一个值的请求的store方法

pinus 前端服务器向后端服务器发送消息

前端向后端发送请求(FormData)