自定义标记继承。

时间:2009-07-25 09:26:40

标签: jsp tags

我的.tld中定义了一个JSP自定义标记“A”。它有3个必需的属性。它的ATaghandler继承了SimpleTagHandler。 我需要一个新的标签“B”,与上面的“A”同样令人兴奋,但是以一种不同的方式。还有“A”中存在的属性,我将它们复制到.tld文件中的“B”(代码复制)。此外,我创建了一个BTagHandler,扩展了ATagHandler,并覆盖了实际更改这两个处理程序的几个方法。其余功能在“ATagHandler中定义。在java方面它很酷,导致很多代码重复由于继承而被避免。” p>

但是在具有标签A和TAg B定义的.tld文件中,属性定义有重复。有没有办法避免这种重复。 如果不, 对我的问题有一个完全不同的方法。 (两个标签都做同样的事情,但稍微改变,所以我使用了继承)

此致 迪帕克

1 个答案:

答案 0 :(得分:2)

我认为您将不得不忍受TLD重复,我知道无法做您想做的事情。这很烦人,感觉不对,但TLD文件粗糙而丑陋。

但是,您可以选择实施javax.servlet.jsp.tagext.DynamicAttributes接口。这允许您省略TLD中的属性声明,因此您不必重复它们,但缺点是属性值将作为名称 - 值对而不是作为javabean属性传递给您的标记,因此它们“使用起来不太好。

因此,它可以选择TLD中的不愉快或Java中的不愉快。随便挑选。