我编写了一个简单的taglib(称为Script
),它获取其正文内容,将其包装在HTML <script>
元素中,并将其插入外部taglib的底部(称为{{1 }})。这是为了Zurb's Foundation 4的自动化初始化。这意味着这个JSP:
Body
呈现为此HTML:
<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>
现在,这种方法的缺点是Eclipse WTP JSP Editor将脚本taglib的主体内容视为更多HTML,因此我失去了JavaScript语法高亮。是否有某种方式(可能通过向<!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>
文件添加信息或创建.tld
类来告诉JSP编辑器该主体是否可以读取JavaScript?或者是仅添加的唯一方法手动TagInfo
元素(为了清楚起见,重命名自定义taglib,如<script></script>
)。另外,为了防止比我更聪明的人说服这个额外的努力是值得的首先,替代方案是在每个页面的底部包含样板Zepto / jQuery加载器和onFoundationReady
,当包括我通过JavaScript SDK使用Facebook Connect的事实时,有很多锅炉板代码,这个taglib干净地隐藏了我)
答案 0 :(得分:1)
是和否。 JSP规范中没有任何内容传达有关标记正文内容的任何相关信息,编辑器可以使用该信息,而不是像处理页面的其余部分那样处理它或将其视为“放手”。
可以对WTP进行更改可能允许另一个 Eclipse插件来确定该区域的语法颜色,但我真的不知道是否有一个特定的功能是值得付出的努力。