如何在<;中禁用Javascript验证;脚本>;JSP中的标记…在Eclipse中
我使用JSTL在JSP中的内联脚本中生成JavaScript对象,如下所示:如何在<;中禁用Javascript验证;脚本>;JSP中的标记…在Eclipse中,javascript,eclipse,validation,jsp,Javascript,Eclipse,Validation,Jsp,我使用JSTL在JSP中的内联脚本中生成JavaScript对象,如下所示: <script> var data = [ <c:forEach items="${MyData}" var="Datum" varStatus="status"> { foo: ${Datum.foo}, bar: '${Datum.bar}' }<c:if test="${not s
<script>
var data = [
<c:forEach items="${MyData}" var="Datum" varStatus="status">
{
foo: ${Datum.foo},
bar: '${Datum.bar}'
}<c:if test="${not status.last}">,</c:if>
</c:forEach>
];
</script>
风险值数据=[
{
foo:${Datum.foo},
bar:“${Datum.bar}”
},
];
Eclipse完全无法验证它。它生成的HTML是正确的——那么如何让Eclipse停止尝试解释/验证JavaScript呢
我在这里遇到了许多类似的问题,但没有一个有效——包括转到首选项
->
验证和选中“暂停所有验证程序”框 您是否尝试使用CDATA转义代码
<script>
//<![CDATA[
...
//]]>
</script>
//
有或没有
/
您是否尝试使用CDATA转义代码
<script>
//<![CDATA[
...
//]]>
</script>
//
有或没有
/
,以防有人仍对解决方案感兴趣
将代码放入jsp文件并将其包含在jsp文件中会阻止javascript验证
<script><%@include file="data_include.jsp" %></script>
另一个快速而肮脏的解决方法:
<script>var data = [];</script>
<c:forEach items="${MyData}" var="Datum" varStatus="status">
<c:out value="${'<script>'}" escapeXml="false"/>
data.push({
foo: ${Datum.foo},
bar: '${Datum.bar}'
});
<c:out value="${'</script>'}" escapeXml="false"/>
</c:forEach>
var数据=[];
数据推送({
foo:${Datum.foo},
bar:“${Datum.bar}”
});
即使在服务器端进行序列化,Eclipse(Galileo)仍然会在脚本标记中为c:out和${}提供验证错误。无论如何,我需要做如下事情:
<c:out value="${'<script>var data = ${jsonData};</script>'}" escapeXml="false"/>
以防有人仍对解决方案感兴趣 将代码放入jsp文件并将其包含在jsp文件中会阻止javascript验证
<script><%@include file="data_include.jsp" %></script>
另一个快速而肮脏的解决方法:
<script>var data = [];</script>
<c:forEach items="${MyData}" var="Datum" varStatus="status">
<c:out value="${'<script>'}" escapeXml="false"/>
data.push({
foo: ${Datum.foo},
bar: '${Datum.bar}'
});
<c:out value="${'</script>'}" escapeXml="false"/>
</c:forEach>
var数据=[];
数据推送({
foo:${Datum.foo},
bar:“${Datum.bar}”
});
即使在服务器端进行序列化,Eclipse(Galileo)仍然会在脚本标记中为c:out和${}提供验证错误。无论如何,我需要做如下事情:
<c:out value="${'<script>var data = ${jsonData};</script>'}" escapeXml="false"/>
Auto:您应该考虑使用适当的JSON编码器来生成这种结构,而不是试图自己去做。否则,像Datum.bar中的'
这样的字符将不会被转义以适合JS字符串文字,并且您将有脚本注入安全漏洞。@bobince-您完全正确;我最终会到达那里的。现在,我只是想把原型组装起来,实际上我使用了bar:${fn:replace(Datum.bar,“'”,“\\”)}
来解决您提到的问题。无论如何,字符串不是来自用户输入的……请注意栏:…
后面的最后一个逗号。它将崩溃。@slebetman:看到,
?省略后面的逗号。:)@Bears:它省略了数组后面的逗号。但是数组中的对象仍然有逗号。您写道: Bar:'${DATAM.Bar },旁边:您应该考虑使用一个合适的JSON编码器来生成这种结构,而不是试图自己去做。否则,像Datum.bar中的'
这样的字符将不会被转义以适合JS字符串文字,并且您将有脚本注入安全漏洞。@bobince-您完全正确;我最终会到达那里的。现在,我只是想把原型组装起来,实际上我使用了bar:${fn:replace(Datum.bar,“'”,“\\”)}
来解决您提到的问题。无论如何,字符串不是来自用户输入的……请注意栏:…
后面的最后一个逗号。它将崩溃。@slebetman:看到,
?省略后面的逗号。:)@Bears:它省略了数组后面的逗号。但是数组中的对象仍然有逗号。你写道:bar:'${Datum.bar}',
我非常希望固定的东西-没有这样的运气。我非常希望固定的东西-没有这样的运气。