记录一次参数校验的bug修改
记录一次修改参数校验的bug
bug描述:一个表单保存的接口,某个字段不能为空,不能包含表情,和空格。现在向这个字段输入了表情,待输入完后,前端做了去掉了空格、表情的操作。当只输入表情的时候,前端替换完再走的前端页面的非空校验。这时,前端的校验通过了。
然后后端接受到了这个值,也通过了非空等一系列的判断。最后保存入库,显示出来就是一个长度为1的空白的数据。
后端通过@NotEmpty,@NotNull,@NotSpace,@CantContainsEmoji注解加上了判断。后面两个注解自己实现的。
为了验证我把这个字段再日志中单独的打印了出来,用了各种方法去判断。尝试了几次后,发现这个字符串就是一个长度不为0的但是看不见的。后面我打印出来了它的unicode才发现这个坑。
1 | replaceAll("\\p{Cf}","") |
接收前端输入的时候,由于前端是富文本,去掉空格后,发现还是有字符串,但是看到的却是””,长度是1,但是人眼看到的是没有字符(0长度的),一直找不到原因。
后来网上查找资料发现了。原来是\u200b ((Zero width space) characters)遂去除。
1 | js去除:str.replace(/\u200B/g,’’); |
- 本文标题:记录一次参数校验的bug修改
- 本文作者:herui
- 本文链接:https://hr2812.cn/2020/10/16/java-remove-invisible-characters/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!