【问题标题】:Cannot escape a quotation(") character when retriveing a string containg quotation inside a string from DB in jsp在 jsp 中从 DB 中检索包含字符串内引号的字符串时,无法转义引号(“)字符
【发布时间】:2014-12-01 15:23:42
【问题描述】:

我已经使用转义字符 i 数据库将引号(“)保存在字符串中。这工作正常。但是当我从数据库中检索 jsp 字段中的值时,字符串在它进入的第一个引号处结束整个字符串。我在下面给出一个例子:

让我们将我存储在数据库中的字符串作为 -

" Hello David. This is a "customer"."

现在,我需要以某种方式将字符串从数据库保存到 jsp 页面中的隐藏字段中,如下所示-

<input type="hidden" name="string_from_database" id="string_from_database" value="<%=some varibale that holds the data from database%>">

问题是 - 部分字符串被暴露(意味着它被写在页面顶部),这是我不想要的。在这种情况下,下面的短语写在 jsp 页面的开头,我不想要。

customer".

请就如何解决此问题提出建议。

【问题讨论】:

  • 不要使用scriptlet,而是JSTL
  • 是的,您还必须转义属性的内容。大多数模板语言都适合你。如果您使用准备好的语句,它也会为您在 sql 中进行转义。如果您使用正确的工具,则无需担心转义。

标签: java javascript string jsp html-escape-characters


【解决方案1】:

使用此函数,您可以将引号替换为 html 实体变体 &amp;quot;。这是一个简单的函数。希望它适合您的模板系统,但如果不适合,应该很容易修改。

function escapeQuotes(str){
    return str.replace(/"/g,'&quot;');
}

Here's a working fiddle

【讨论】:

  • 引号字符并不是 HTML 属性需要转义的唯一字符。使用更通用的解决方案不是更好吗,比如让模板引擎来解决?无需重新发明轮子。
  • 我会说它确实解决了 OP 的具体问题,但你是对的。您应该使用模板为您提供的内容。我不熟悉jsp或jstl,所以我无法真正建议或评论如何使用它。
【解决方案2】:

使用 Jstl 而不是 scriptlet for further Explanation

使用 EL - 表达式语言 (${variable}) 来获取值,例如。 ${welcome}

<c:out value="${some varibale that holds the data from database}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    相关资源
    最近更新 更多