【问题标题】:Using JavaScript within a JSP tag在 JSP 标记中使用 JavaScript
【发布时间】:2010-09-18 18:53:30
【问题描述】:

我已经看到this question 重新导入与标签内容本身相关的 js 文件。我有一个类似的问题,这里我有一个生成一些 HTML 的 jsp 标记,并有一个通用的 js 实现来处理这个 HTML 的行为。此外,我需要编写一些初始化语句,以便之后通过 JavaScript 使用它。为了能够在我的 JavaScript 中使用这个“处理程序”,它应该可以通过某种方式访问​​。

问题是...可以将内联

【问题讨论】:

    标签: javascript jsp jsp-tags


    【解决方案1】:

    虽然我同意它并不完全优雅,但在将服务器端决策与 AJAX 集成环境相结合时,我曾多次这样做过。回显内联

    至于更好的方法,我不知道这些。我很少这样做,以至于我没有寻求更优雅或“适当”的解决方案。

    【讨论】:

      【解决方案2】:

      我不完全确定您在这里问什么,但我认为在 JSP 中包含 <script> 标记以实例化 javascript 代码没有任何问题。我经常遵循这个模型,在外部 javascript 文件中编写库代码,然后从 <script> 标签调用我的对象的构造函数。

      这使得调试变得容易,因为逻辑都在外部文件中(而且 firebug 似乎在调试内联 javascript 代码时遇到了麻烦)。库被缓存,但实例化它们的数据没有(这是期望的行为)。

      另一种方法是在外部 javascript 文件或 AJAX 调用中动态生成实例化代码。我也这样做了,取得了积极的结果。

      我认为决定因素是您拥有多少动态数据。如果您需要表示大型数据结构,我会通过返回 JSON 的 AJAX 调用来提供它。如果是对构造函数的简单调用,请将其放入 JSP 中。

      至于全局变量,我通常会为顶级对象设置一个全局变量,它会启动一切。在其中,是对辅助对象的所有其他引用。

      【讨论】:

        【解决方案3】:

        可以在 HTML 中使用<script> 标签。有时需要它,但至于任何更好的方法我不知道。在不让事情看起来更复杂的情况下,使用<script> 标签然后尝试找到实现js文件的方法会更容易。

        【讨论】:

          【解决方案4】:

          您应该在自己的文件中使用 javascript。这通常使用Progressive Enhancement 完成。但有时您别无选择,例如当同一个 JSP 以不同语言呈现页面时。这是一个真实的例子:

          JSP:

            <script src="/javascript/article_admin.js"></script>  
            <script type="text/javascript">  
                NP_ArticleAdmin.initialize({  
                      text: {  
                        please_confirm_deletion_of: '<i18n:output text="please.confirm.deletion.of"/>',  
                        this_cannot_be_undone: '<i18n:output text="this.cannot.be.undone"/>'  
                      }  
                });  
            </script>  
          

          javascript (article_admin.js):

           /*global NP_ArticleAdmin, jQuery, confirm */  
           NP_ArticleAdmin = function ($) {  
               var text;  
          
               function delete_article(event) {  
                   var article = $(this).parents("li.article"),  
                   id = article.attr("id"),  
                   name = article.find("h3.name").html();  
                   if (confirm(text.please_confirm_deletion_of + name + text.this_cannot_be_undone)) {  
                       $.post("/admin/delete_article", {id: id});  
                       article.fadeOut();  
                   }  
                   event.preventDefault();  
                   return false;  
               }  
          
               function initialize(data) {  
                   text = data.text;  
                   $("#articles a.delete").click(delete_article);  
               }  
          
               return {initialize: initialize};  
           }(jQuery);
          

          在此示例中,JSP 文件中唯一的 javascript 是需要存在的部分。核心功能在其自己的 js 文件中分离。

          【讨论】:

            猜你喜欢
            • 2014-03-07
            • 2011-02-13
            • 1970-01-01
            • 1970-01-01
            • 2017-06-03
            • 1970-01-01
            • 2021-02-28
            • 2011-04-27
            • 1970-01-01
            相关资源
            最近更新 更多