Java 未终止字符串常量
“我的描述”包含一个APSTROPE(')。如何逃避它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
<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), "'", "'") %>",
"<%= pageBean.replace(list.getColumn(1), "'", "'") %>");' title="<%=selRpt%>">
<span class='img-view'></span></a>
您必须用#39代码>在呈现之前。
您可以在
-来自的属性文件
-ASP中的代码
顺便说一句,你在这方面想做什么
"<%= pageBean.replace(list.getColumn(1), "'", "'") %>"
“”
或许
"<%= pageBean.replace(list.getColumn(1), "'", "'") %>"
“”
应该做这项工作。一个普通的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
eventpageBean.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}">