jsp中的多个Javascript标记包含

时间:2012-05-23 14:43:19

标签: javascript jsp jsp-tags

这是我在jsp中的代码:

<script>  
var myArray = [];
</script>
    <c:forEach var="attributes" items="FROMthisBEAN"  varStatus="vStatus" >  
                <script>
                 //Executes for each iteration. Do something COOL.
                 myArray.push("Something from this iteration");
                </script>
    </c:forEach>

现在请考虑以下事项:

<script>  
    var myArray = [];    
        <c:forEach var="attributes" items="FROMthisBEAN"  varStatus="vStatus" >  
                    myArray.push("Something from this iteration");
        </c:forEach>
 </script>
<c:forEach var="attributes" items="FROMthisBEAN"  varStatus="vStatus" >  
                //Executes for each iteration. Do something COOL.
</c:forEach>

两个代码都给我相同的输出 问题是哪一个在绩效方面更好? 在第一种情况下,c:forEach中的脚本标记一次又一次地重复 但在第二种情况下,我正在创建一个c:forEach,它已经存在于JSP中 完全迷失在这里。请指教。

1 个答案:

答案 0 :(得分:2)

将这些内容放在单独的<script>标记中完全没必要。如果你真的想让它变得更好,你应该考虑创建一个JavaScript数组文字,而不是一系列的“push()”调用。将Java数组呈现为JSON的JSP扩展可以解决问题。

编辑 - 详细说明,作为JSTL函数提供的JSON编码器可以让你编写如下内容:

<script>
  var myArray = ${yourTLD:toJSON( some.java.array _)};
</script>

“toJSON”函数将获取数组并将其呈现为标准JSON,具体取决于其内容(当然,根据所使用的JSON代码,可能会受到一定限制)。传递给浏览器的JavaScript结果如下所示:

<script>
  var myArray = [ "something", "something", "something" ];
</script>

完全取决于Java数组中的内容。 Java有各种JSON编码库,编写一个非常难(实际上在特殊情况下更容易比调整开源库)。将函数作为JSTL EL函数提供是在某处创建公共静态函数并在.tld文件中声明它的问题。