繁体   English   中英

将JSTL变量放入Javascript时出现转义错误

[英]Get escaping error when putting JSTL variable into Javascript

我按照这篇文章使用JSTL变量渲染javascript变量:

var size= "<c:out value='${fn:length(orders)}'/>";

但是,不是很幸运,我得到了这样的异常:

Element type "size" must be followed by either attribute specifications, ">" or "/>".

所以我用

var size= &lt;c:out value='${fn:length(orders)}'/&gt;;

相反,但没有运气。 加双引号后:

var size= "&lt;c:out value='${fn:length(orders)}'/&gt;";

仍然无法正常工作..那么如何逃避并使其正常工作呢?

更新1

jspx看起来像这样:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<jsp:root 
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:field="urn:jsptagdir:/WEB-INF/tags/form/fields" 
    xmlns:jsp="http://java.sun.com/JSP/Page" 
    xmlns:page="urn:jsptagdir:/WEB-INF/tags/form" 
    xmlns:spring="http://www.springframework.org/tags" 
    xmlns:form="http://www.springframework.org/tags/form" 
    xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
    version="2.1">
<div>
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<jsp:output omit-xml-declaration="yes"/>

<page:show>
   <form:form.....
    <!--body of the form -->
   </form:form>
</page:show>

<script type="text/javascript">
    //jquery and so...
    ....
    var size= "<c:out value='${fn:length(orders)}'/>";
    ....
</script>

</div>
</jsp:root>

根据文章链接的答案,最好先根据需要定义一个变量,然后在JavaScript中使用该变量的值:

<c:set var="ordersLength" value="${fn:length(orders)}"/>
<script type="text/javascript">
    var size= "<c:out value='${ordersLength}'/>";
</script>

另一个选择是在隐藏字段中设置${fn:length(orders)}值,然后在JavaScript中读取此字段的值:

<input type="hidden" id="ordersLength" value="${fn:length(orders)}" />
<script type="text/javascript">
    var size = document.getElementById('ordersLength').value;
</script>

当然,这最后一个选项很笨拙,但可以帮助您解决此问题。

如果这些都不起作用,则意味着您的orders变量既未设置,也未设置为请求属性,会话属性,应用程序属性或页面属性(根据您答案中提供的代码,我们将无法为您提供帮助[然而])。

您无法使其与jspx文件一起使用。 您可以使用jsp文件。

jspx文件需要格式正确的XML。 XML在处理EL之前先经过验证,因此您的代码将失败。

看到这篇文章更好的解释

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM