设置jquery变量的值等于jstl变量

时间:2013-05-05 12:36:02

标签: spring spring-mvc jstl el

我有一个jstl值,

<c:forEach items="${detail}" var="u">
<c:set value="${u.content}" var="c"/></c:forEach>

我想将jquery中的变量设置为等于var =“c”。

我怎么能这样做?

2 个答案:

答案 0 :(得分:2)

<script>
  <c:forEach items="${detail}" var="u">
    <c:set value="${u.content}" var="c"/>
    var whatever = ${c};
  </c:forEach>
<script>

您可能需要JS逃避它,引用它等等,具体取决于变量中的,您没有提及。还不清楚“jQuery中的变量”是什么。

最重要的是,如果JavaScript存在于JSP中,只需使用该值:在响应发出之前不评估JS,因此混合匹配,但请注意,创建它非常容易JavaScript无效,除非您注意正确地逃避您正在发布的任何值类型。

作为一个例子,考虑一个包含单引号的Java String:如果你在JS中引用Java值,你就会得到无效的JS,因为你没有JS-escape字符串值。

答案 1 :(得分:0)

下面代码中给出的方法可能是正确的,但是变量只有一个值,也只有在每个循环的最后一次计数期间才存在

<script>
    <c:forEach items="${detail}" var="u">
        <c:set value="${u.content}" var="c"/>
        var whatever = ${c};
    </c:forEach>
<script>

例如,如果变量detail的循环是列表类型,其中包含字符串类型对象,如“A”,“B”,“C”那么在var的值为“C”的情况下将是“C” “,这是因为jstl是编译时语言。

因此上面的代码不适用于每个循环 以下代码可能会帮助您或至少为您提供相同的想法。

<script>
    var whatever = new Array;
    <c:forEach items="${detail}" var="u">
        <c:set value="${u.content}" var="c"/>
        for (var i=0;i<whatever.length;i++)
        {
            whatever[i]=${c};
        }
    </c:forEach>
<script>