Java 未终止字符串常量

Java 未终止字符串常量,java,javascript,html,jsp,Java,Javascript,Html,Jsp,“我的描述”包含一个APSTROPE(')。如何逃避它 <a href='javascript:select("<%= pageBean.replace(list.getColumn(0), "'", "'") %>", "<%= pageBean.replace(list.getColumn(1), "'", "'") %>");' title="<%=selRpt%>"> <span class='img-view'></sp

“我的描述”包含一个APSTROPE(')。如何逃避它

<a href='javascript:select("<%= pageBean.replace(list.getColumn(0), "'", "'") %>",
"<%= pageBean.replace(list.getColumn(1), "'", "'") %>");' title="<%=selRpt%>">
<span class='img-view'></span></a>

是我的JSP脚本中的描述部分,其中包含apstrople(”)

我的HTML视图

    <a href='javascript:select("JWCCA5",
"Worker's Compensation Form -  California Form 5020(New)");' 
title="Select Report"><span class='img-view'></span></a>

使用
\'

在HTML标记中,需要将字符串转换为HTML实体,因此引号变成
'


在纯JavaScript中,您还可以通过从HTML调用函数来转义引号,并将JavaScript放入该函数中。这会解决你的问题,但我认为无论如何练习都会稍微好一点。

通常\'应该有效,但有时似乎需要使用“”(双撇号)

试试这个:

<%= pageBean.replace(list.getColumn(0), "'", "\'" %>

或:


也许您可以使用unicode字符代码?(\u0027)

用于您应该使用的保留HTML字符。然后,撇号被表示为
'

<a href='javascript:select(
  "<%= pageBean.replace(list.getColumn(0), "'", "&#39;") %>", 
  "<%= pageBean.replace(list.getColumn(1), "'", "&#39;") %>");' title="<%=selRpt%>"> 
<span class='img-view'></span></a>

您必须用
#39在呈现之前。
您可以在
-来自的属性文件
-ASP中的代码

顺便说一句,你在这方面想做什么

"<%= pageBean.replace(list.getColumn(1), "'", "'") %>" 
“”
或许

"<%= pageBean.replace(list.getColumn(1), "'", "&#39;") %>" 
“”

应该做这项工作。

一个普通的JSP开发人员会使用老式的Scriptlet,并使用JSTL或。两个转义都像
'
'等等

下面是一个使用
fn:escapeXml
的示例:

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<a href="javascript:select('${fn:escapeXml(list.columns[0])}',
    '${fn:escapeXml(list.columns[1])}');" title="${title}">

...

您可能只需要将模型更改为更具完整性的Javabean。

您可能会认为框架会有某种HTML转义文本的方式。见鬼,连PHP都能做到。顺便说一句,不要把JavaScript放在
href
参数中。使用
onclick
event
pageBean.replace()
方法的目的是什么?它将替换来自DB列的值
就是这样,HTML不允许反斜杠转义。@John,将“Worker”替换为“Worker”。@John您没有指定您正在使用的语言,但它几乎肯定有一个
addslashes
函数来添加反斜杠,或者有一个
htmlentities
函数来将所有特殊字符转换为它们的实体等价物。@Andy是正确的,我忽略了这是在HTML代码中,因此,您需要在您的语言/框架中查找entities函数,这取决于字符串的来源。我假设“工人补偿表”最终将被放置在一些属性中(至少应该是这样,我不会硬编码),在这种情况下,您应该在属性文件中转义它。否则,只需在编写代码时对其进行转义即可。我希望您可以在任何有撇号的地方使用它,而撇号不打算用作分隔符。
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<a href="javascript:select('${fn:escapeXml(list.columns[0])}',
    '${fn:escapeXml(list.columns[1])}');" title="${title}">