如何在Jquery选择器中使用JSTL var

时间:2011-08-19 12:56:18

标签: jquery jquery-selectors jstl

我正在使用以下Jquery选择器

$("#selectedQuery td input:radio").attr('checked', true);

其中selectedQuery是声明为

的JSTL变量
<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" />  

我使用硬编码值测试了选择器,它工作正常但与selectedQuery一起使用时没有运气。
我们如何在Jquery中使用JSTL <c:set> var?有什么工作吗?

3 个答案:

答案 0 :(得分:13)

将JSTL代码与JavaScript混合可能会导致代码变得混乱。如果这是不可避免的,我将所有JSTL变量设置为JavaScript变量:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" />
<script type="text/javascript">
    //NOTE: we are sure 'selectedQuery' does not contain any double-quotes,
    // but most values will need to be escaped before doing this.
    var selectedQuery = "${selectedQuery}";

    // etc.
</script>

...

<script type="text/javascript">
    $("#" + selectedQuery + " td input:radio").attr('checked', true);
</script>

答案 1 :(得分:4)

在JSP中:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" />  

<script>
    $("#${selectedQuery} td input:radio").attr('checked', true);
</script>

答案 2 :(得分:2)

我一直这样做。 JSP解析器不知道或关心<script>标记的内容(无论是否使用jQuery)与JSP页面中的任何其他内容之间的差异。

如果你这样做,它应该可以正常工作:

<c:set var="selectedQuery" value="${dataRequestForm.queryMasterId}" />

...

<script>
    $("#${selectedQuery} td input:radio").attr('checked', true);
</script>

请注意,这要求jQuery选择器的<script>元素位于与<c:set>相同的页面/ JSP范围内。如果它们不在同一范围内,那么当然这将不起作用。