如何在 JSP 上转义撇号或引号(由 JavaScript 使用)

新手上路,请多包涵

我有一个用户表单。如果用户输入一个字符串 '" 作为它的一部分,我没有问题。表单已提交并正确保存到数据库中。我的问题是当我重新加载页面时(所有条目都可以修改并在显示之前加载到 JSP 中的列表中)。在加载页面时,我收到一条错误消息:

 missing ) after argument list 'Caroline's message', \n

我需要做什么来转义这个字符串以便在前端显示它?

这是我在前端使用的代码,用于读取数据并将其存储在 JavaScript 对象中。我不完全确定我需要逃到哪里去。导致问题的字段是 c.getComName:

 communications[<%=i%>][1] = new CommObject('<%=c.getComId()%>', '<%=c.getComName()%>');

使用生成的 HTML 更新:

 communications[0][1] = new CommObject('101', 'Caroline's Message');

原文由 Caroline 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 581
2 个回答

使用 Apache StringEscapeUtils.escapeJavaScript 函数。

 Escapes the characters in a String using JavaScript String rules.

Escapes any values it finds into their JavaScript String form.
Deals correctly with quotes and control-chars (tab, backslash, cr, ff, etc.)

So a tab becomes the characters '\\' and 't'.

原文由 Kevin Hakanson 发布,翻译遵循 CC BY-SA 3.0 许可协议

我更喜欢避免在我的页面中间使用 scriptlet,并且在 JavaScript 代码中使用时不得不(越来越频繁地)使用它们来转义字符串。我想要一种转义字符串的 表达式语言(EL) 方式。我创建了一个非常小的自定义标签库,仅用于此目的:

实用程序.java:

 package com.mycom.taglibs;

import org.apache.commons.lang.StringEscapeUtils;

public class Utilities {
    public static String escapeJS(String value) {
        return StringEscapeUtils.escapeJavaScript(value);
    }
}

mytaglib.tld:

 <?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">

  <description>My Tag Library</description>
  <display-name>Tag Utils</display-name>
  <tlib-version>1.1</tlib-version>
  <short-name>myt</short-name>

  <function>
    <description>
        JavaScript Escape function
    </description>
    <name>escapeJS</name>
    <function-class>com.mycom.taglibs.Utilities</function-class>
    <function-signature>java.lang.String escapeJS(java.lang.String)</function-signature>
  </function>
</taglib>

并且,在 JSP 页面中:

 <%@ taglib prefix="myt" uri="/WEB-INF/mytaglib.tld" %>
The escaped string is: ${myt:escapeJS(variableHoldingTheString)}

原文由 RHSeeger 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题