JSTL函数用于替换字符串内的引号字符?

11

如何在字符串值内用 \" 序列替换引号字符是最简单的方法?

2个回答

16

那将是fn:replace()函数。

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
${fn:replace(foo, '"', '\\"')}

跟具体问题无关,这通常是为了防止用户控制的输入作为HTML属性重新显示时出现格式不正确的情况。通常情况下,您应该使用<c:out>fn:escapeXml()来实现。例如:

<input name="foo" value="<c:out value="${param.foo}" />" />
<input name="foo" value="${fn:escapeXml(param.foo)}" />

它不仅考虑引号,还考虑所有其他XML特殊字符,如<>&amp;等。

另请参阅:


我正在使用JSP创建JSON,因此直接要求是转义引号。一些数据稍后用于在页面上显示,因此可能还需要进行HTML转义。感谢提供链接! - Dims
我宁愿使用一个完整的JSON工具,而不是在JSP中完成这项工作。从这里开始查看一些具体的示例:https://dev59.com/BW855IYBdhLWcg3w1oPa 或者如果您的环境允许,可以选择JAX-RS Web服务:https://dev59.com/Tmsz5IYBdhLWcg3weHuU - BalusC

-7
使用JavaScript的replace函数(带上/g以替换所有出现的)
string.replace(/"/g, '\\"')

1
我正在server-sine上的JSP文件中,无法传递到JS。 - Dims

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接