未终止的字符串常量

时间:2010-10-20 11:20:28

标签: java javascript html jsp

我的描述包含一个apstrophe(')。如何逃脱它。

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

"<%= pageBean.replace(list.getColumn(1), "'", "'") %>"是我的JSP Scriptlet中的描述部分,其中包含apstrophe(')

我的HTML视图

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

7 个答案:

答案 0 :(得分:6)

使用\'

在HTML标记内,您需要将字符串转换为HTML实体,因此引号变为&#039;

在纯JavaScript中,您还可以使用\'

转义引号

答案 1 :(得分:6)

对于保留的HTML字符,您应该使用HTML entities。然后将撇号重新表示为&#39;

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

答案 2 :(得分:2)

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

试试这个:

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

或:

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

其中一个应该有用(根据我的经验)。

对于HTML标记内的属性,我会使用“(引号)而不是”(撇号)。

答案 3 :(得分:1)

从HTML调用函数,并将JavaScript放入该函数中。它会解决你的问题,但我认为这样做稍微好一些。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

在渲染之前,您必须将'替换为#39; 你可以在中做   - 来自何处的属性文件
  - 在ASP中的代码

顺便说一下,你在这条路上尝试了什么?

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

也许

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

应该做的工作。

答案 6 :(得分:1)

普通的JSP开发人员会abandon过时的 scriptlet ,而是使用JSTL c:outfn:escapeXml。两者都predefined XML entities转义为'&#39;,依此类推。

以下是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。