Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JSP标记中使用JavaScript_Javascript_Jsp_Jsp Tags - Fatal编程技术网

在JSP标记中使用JavaScript

在JSP标记中使用JavaScript,javascript,jsp,jsp-tags,Javascript,Jsp,Jsp Tags,我已经看到重新导入与标记内容本身相关的js文件。我有一个类似的问题,这里我有一个生成一些HTML的jsp标记,还有一个处理这个HTML行为的通用js实现。此外,我需要编写一些初始化语句,以便以后可以通过JavaScript使用它。为了能够在我的JavaScript中使用这个“处理程序”,它应该可以以某种方式访问 问题是。。。为了实例化和初始化的目的,可以将内联标记与HTML一起编写吗(我个人认为它不是很优雅)?关于JS世界的可访问性,我是否应该留下一个引用我的处理程序对象的全局变量(我认为不是很

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


问题是。。。为了实例化和初始化的目的,可以将内联标记与HTML一起编写吗(我个人认为它不是很优雅)?关于JS世界的可访问性,我是否应该留下一个引用我的处理程序对象的全局变量(我认为不是很优雅),有更好的方法吗

虽然我同意它并不完全优雅,但在将服务器端决策与AJAX集成环境相结合时,我已经多次这样做了。为了初始化一些变量而回显内联标记并不是一件可怕的事情,只要没有人看到它


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

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

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

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

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


至于全局变量,我通常会为顶级对象设置一个全局变量,以启动所有操作。里面是对帮助对象的所有其他引用。

可以在HTML中使用
标记。有时候需要它,但我不知道有什么更好的方法。在不使事情看起来更复杂的情况下,使用
标记然后尝试找到一种实现js文件的方法更容易。

您应该努力在自己的文件中使用javascript。这通常是通过以下方式完成的。但有时您没有选择,例如,当同一个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>  
在本例中,JSP文件中唯一的javascript是需要存在的部分。核心功能在其自己的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);