一尘不染

有没有办法使Eclipse WTP JSP编辑器将自定义TagLib的主体视为JavaScript?

jsp

我已经编写了一个简单的taglib(称为Script),它接收主体的内容,将其包装在HTML
<script>元素中,然后将其插入外部taglib(称为Body)的底部。这是为了自动化Zurb’s Foundation
4
的初始化。这意味着该JSP:

<r:page>
  <r:head title='Test Site'/>
  <r:body>
    <div id='thing'></div>
    <r:script>
      $(function() {
        $('#thing').html('DOM is ready');
      });
    </r:script>
  </r:body>
</r:page>

呈现为以下HTML:

<!DOCTYPE html>
<!--[if IE 8]><html class='no-js lt-ie9' lang='en'><![endif]-->
<!--[if gt IE 8]><!--><html class='no-js' lang='en'><!--<![endif]-->
  <head>
    <meta http-equiv='content-type' content='text/html;charset=UTF-8' />
    <title>Test Site</title>
    <meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1'>
    <link rel='stylesheet' href='/css/foundation.min.css'>
    <script src='/js/vendor/custom.modernizr.js'></script>
    <!--[if lt IE 9]><script src='http://html5shiv.googlecode.com/svn/trunk/html5.js'></script><![endif]-->
  </head>
  <body>
    <div id='thing'></div>
    <script>
      document.write('<script src=/js/vendor/' + ('__proto__' in {} ? 'zepto' : 'jquery') + '.js><\/script>')
    </script>
    <script src='/js/foundation.min.js'></script>
    <script>
      $(document).foundation();
      //The contents of the <r:script> from the JSP
      $(function() {
        $('#thing').html('DOM is ready');
      });
    </script>
  </body>
</html>

现在,这种方法的缺点是Eclipse WTP
JSP编辑器将脚本taglib的主体内容视为更多HTML,因此我失去了JavaScript语法突出显示功能。是否有某种方法(可能是通过向.tld文件中添加信息或创建一个TagInfo类来告诉JSP编辑器该主体是要读取JavaScript的方式?还是唯一的方法<script></script>是手动添加一个元素(为了清楚起见,重命名)自定义taglib之类的onFoundationReady)。另外,以防万一仍然有可能说服比我自己聪明的人,这些额外的努力首先是值得的,替代方法是包括样板Zepto
/ jQuery loader和$(document).foundation(); 在每个页面的底部,并且当包括我也通过JavaScript
SDK使用Facebook Connect的事实时,有很多样板代码,这个taglib完全向我隐藏了)


阅读 222

收藏
2020-06-10

共1个答案

一尘不染

是的,没有。JSP规范中没有任何内容可以传达有关标签正文内容的任何相关信息,编辑者可以像处理页面其余部分或将其视为“放手”一样使用它。

变化可能给该污水处理厂进行 可能另一个 Eclipse插件,以确定语法着色该区域,但是我真的不知道,如果一个特定的功能是值得付出的努力。

2020-06-10