2009-07-25 9 views
0

Ich habe eine benutzerdefinierte JSP-Tag "A" in meiner .tld definiert. Es hat 3 erforderliche Attribute. Es hat seinen ATagHAndler, der SimpleTagHandler erbt. Ich brauche ein neues Tag "B", das genau das gleiche wie oben "A" tut, aber auf eine etwas andere Art und Weise. Auch die Attribute, die in "A" vorhanden sind, kopierte ich sie in "B" in der .tld-Datei (Code-Duplizierung)). Außerdem habe ich einen BTagHandler extended ATagHandler, und überschrieb die wenigen Methoden, die tatsächlich über diese beiden Handler ändert. Und Ruhe-Funktionalität ist in "ATagHandler definiert. Auf der Java-Seite ist es cool, weil viel Code-Duplizierung aufgrund der Vererbung vermieden wird.Benutzerdefinierte Tag-Vererbung.

Aber in der .TLD-Datei, die die Definition von Tag A und TAg B hat, gibt es eine Duplizierung der Attributdefinition Gibt es einen ganz anderen Ansatz für mein Problem . (Beide Tags tun excatly gleichen Dinge, aber eine leichte Veränderung, so habe ich Vererbung)

Grüße, Deepak

Antwort

2

Ich denke, du wirst mit der TLD-Duplizierung leben müssen, ich weiß nicht, was ich tun möchte. Es ist ärgerlich, und es fühlt sich nicht richtig an, aber TLD-Dateien sind grob und hässlich.

Sie haben jedoch die Möglichkeit, die Schnittstelle javax.servlet.jsp.tagext.DynamicAttributes zu implementieren. Auf diese Weise können Sie die Attributdeklarationen aus der TLD weglassen, sodass Sie sie nicht wiederholen müssen. Der Nachteil besteht jedoch darin, dass die Attributwerte als Name-Wert-Paar an Ihr Tag übergeben werden und nicht als Javabean-Eigenschaft sind nicht so schön zu benutzen.

So ist es eine Wahl zwischen Unerfreulichkeit in der TLD oder Unannehmlichkeiten in der Java. Treffen Sie Ihre Wahl.

+1

+1. Soweit die DynamicAttributes-Schnittstelle geht, ist das größte Problem mit der fehlenden Überprüfung der Kompilierzeit. Mit TLDs (roh wie sie sind) wird die Kompilierung fehlschlagen, wenn Sie ein Attribut falsch schreiben; Mit dynamischen Attributen erhalten Sie bestenfalls eine Laufzeit-JspException und im schlimmsten Fall werden falsche Attribute stillschweigend verschluckt, was zu unbestimmtem Verhalten führt. – ChssPly76

Verwandte Themen