【问题标题】:Multiple Javascript tag inclusions in jspjsp 中包含多个 Javascript 标记
【发布时间】:2012-05-23 14:43:18
【问题描述】:

这是我在 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 中的脚本标签会一次又一次地重复。
但在第二种情况下,我正在创建一个已经存在于 JSP 中的 c:forEach。
完全迷失在这里。请指教。

【问题讨论】:

    标签: javascript jsp jsp-tags


    【解决方案1】:

    完全没有必要将这些东西放在单独的&lt;script&gt; 标签中。如果你真的想让它变得更好,你可能应该考虑创建一个 JavaScript 数组字面量,而不是一系列“push()”调用。将 Java 数组呈现为 JSON 的 JSP 扩展就可以解决问题。

    edit — 详细地说,作为 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 文件中声明它。

    【讨论】:

    • 很有趣,您能否提供更多有关如何完成相同操作的信息?
    猜你喜欢
    • 1970-01-01
    • 2014-03-15
    • 2012-02-20
    • 2013-04-16
    • 2017-02-04
    • 1970-01-01
    相关资源
    最近更新 更多