我<3标记文件,但JSTL的首席开发人员如果他们真的这么说就吸烟了.您无法将所有标记库标记重新编写为标记文件标记,原因很重要:标记文件无法执行以下操作:
返回EVAL_BODY_INCLUDE;
换句话说,标记文件只有三个选项用于其正文内容:
空的:没有内在的内容,即.<someTag />
无脚本:没有JSP内部内容,即.<someTag> <p> hello world </ p> </ someTag>没问题,但<someTag> <p> <%= helloWorld.toString()%> </ p> </ someTag>
tagdependent:您可以拥有JSP内部内容,但不会这样处理; 相反,你必须解析/渲染它,但你认为合适
但是使用旧样式标记库标记,您可以:<body-content> JSP </ body-content>(在tld文件中)然后"返回EVAL_BODY_INCLUDE;" 来自你的"doStartTag".如果这样做,所有JSP指令都将被解析,就像它们是页面的正常部分一样,并且您的标记只是用适当的内容包装它们.
就个人而言,我的经验法则是:尽可能使用标记文件,即.每当你不需要JSP指令在标记内部工作时,因为它们比非程序员更容易清理一百万倍,不需要tld(如果你将它们保存在一个单独的命名空间中你的标签库标签).
但是如果您想在标记内部使用JSP内容,那么您唯一的选择就是标记库标记.希望有一天,JSP人员会发布一种在标记文件标记内部进行JSP指令处理的方法,然后我们真的可以放弃旧的基于类的标记,但在此之前请不要尝试用标记文件做所有标记因为你很快就会被简化为为每一个逻辑片段制作自定义标签(因为这是在不使用JSP指令的情况下进行逻辑的唯一方法).
开发自定义标签的问题
传统的自定义标签需要Java编程技能.
除最简单的自定义标签之外的所有标签都不容易编写.
与servlet相比,JSP的目的是使用标记语言来管理具有嵌入式动态内容的布局.
必须在专注于标记语言的自定义标记中编写复杂的Java代码.
在实现新的自定义标记时,我们可能希望使用JSP表达式语言或其他自定义标记.
解决方案 JSP 2.0标记文件
标签文件有何不同之处?
使用JSP语法编写.
由.tag或.tagx后缀标识.
旨在为自定义标记开发人员提供易于开发而不会丢失功能.
| 归档时间: |
|
| 查看次数: |
5659 次 |
| 最近记录: |