我有一个jstl值,
<c:forEach items="${detail}" var="u">
<c:set value="${u.content}" var="c"/></c:forEach>
我想将jquery中的变量设置为等于var =“c”。
我怎么能这样做?
答案 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>