为什么JSP 2.0标记文件不能具有“JSP”的正文内容?

时间:2009-05-22 22:53:08

标签: jsp tags jsp-tags

“新的”JSP 2.0标记文件标记非常有用,对于大多数情况(至少我已经看到),它们提供了比Java类更易读的格式。然而,虽然标记文件可以几乎 Java类标记可以做的所有事情,但是有一件巨大的事情是他们做不到的:拥有“脚本”身体内容(即“<%”之间的东西开始和结束标签)。

所以,我的问题是多部分的:

  1. 有谁知道为什么(从设计的角度来看)这是什么?由于标记文件的实现方式或其他内容,标记文件本身是否无法拥有此类内容?
  2. 有没有人知道是否有任何未来的计划允许在标记文件中使用body-content =“JSP”(在JSP标准的未来版本中可能)?
  3. 有没有人知道有什么方法可以“破解”标记文件以允许它们拥有脚本内容(比如拥有无脚本的正文内容,然后以某种方式处理内容)?
  4. 基本上我的梦想是有一天会写一些标签文件,如果有人提出

    ,这些文件不会导致异常

    <%= myVar %>

    在里面,我只是想确定这个梦是否是没有希望的。

2 个答案:

答案 0 :(得分:3)

JSP标记是以这种方式设计的,因此表示层和后面的代码之间将完全分离关注点。 JSP页面应该由设计者编辑,因此使用Java代码是不合适的。

我想你需要在这个哲学中调整你的编码习惯。您可以将所有Java代码移动到bean中。做任何需要的东西,然后将适当的bean传递给JSP页面。异常处理也应该去那里。如果这还不够,您可以随时创建自己的标签。

答案 1 :(得分:2)

如果您使用旧样式标签,即可以从BodyTag派生,它们可以。但是,SimpleTag实现不能。

  

因为JSP片段不支持scriptlet,所以 SimpleTag 不能是“JSP”

就个人而言,如果可以,我会尽量避免使用Java来编写标签,并且只使用新的.tag样式。您可以将Java代码合并到这样的标记文件中,但一般情况下,如果您被迫这样做,那么您可能做错了。