服务端返回的数据包含回车符,导致前端报错的解决方法

1 描述

应用系统中,发现如果用户在大文本框中输入了回车符并保存了数据,那么获取数据时,就会发生错误,跟踪发现,报的是 json 格式错误。

2 分析

前端 web 设计了大文本框,这就意味着可以由用户任意输入字符,甚至包括回车符!而我们的后端与前端交互的数据格式是 json,如果数据中包含回车符 \r\n 或者 \\r\\n,会被浏览器判定为格式不正确。这样,前端页面就没有办法渲染得到的数据,因此抛错。

3 解决

因为我们的前端的数据只是表格展示,所以我们只要把回车符过滤掉,就可以了。(如果需要在大文本框中重新展示,可以加入 json 支持的特殊字符,然后在显示时再进行一次转换,这样就能满足要求咯 O(∩_∩)O~)

因为涉及的字段比较多,用的数据又都是放在 freemarker 的 ftl 文件中,所以我们写了一个通用函数,过滤了回车符:

core.ftl

<#--过滤回车符函数-->
<#--输入:字符串-->
<#--输出:-->
<#function filterEntryKey s="">
    <#return s?replace("\r\n", "")?replace("\\r\\n","")/>
function>

可以这样使用:

<#import "core.ftl" as core/>
...
${core.filterEntryKey(data.remarks!"")}"
...

你可能感兴趣的:(Java,JavaScript)