====== How-To: Eigene Tags in der Suchmaske hinzufügen ====== **Problem:** Die vorhandenen Tags und ihre Optionen reichen nicht aus, um dynamisch den richtigen HTML-Code zu generieren. **Lösungsansatz:** Neue Tags können via Java hinzugefügt werden und anschließend bei SimpleServer/Tomcat registriert werden. **Vorteile:** * Keine Einschränkungen in der Umsetzbarkeit von dynamisch generierten Inhalten **Nachteile:** * Java-Kenntnisse erforderlich. **Autor:** Benjamin Pick https://github.com/benjaminpick ===== Download ===== * Ein Beispiel der Umsetzung befindet sich unter contrib/crawler-thumbnails. ===== Anleitung ===== Angenommen, Sie möchten folgenden Tag in ihren JSPs benutzen:

Dafür erstellen wir eine Klasse ''HelloworldTag'' im package ''some.example''. (Der name der Klasse wird durch den Tagnamen festgelegt. wäre Klasse ''World'' im package ''some.example.hello'') package some.example; import net.sf.regain.RegainException; import net.sf.regain.util.sharedtag.PageRequest; import net.sf.regain.util.sharedtag.PageResponse; import net.sf.regain.util.sharedtag.SharedTag; public class HelloworldTag extends SharedTag { public void printEndTag(PageRequest request, PageResponse response) throws RegainException { response.print("Hello, World!"); } } Jetzt kompilieren wir diese Klasse mit der verwendeten Regain-Version: javac -classpath path/to/build/regain.jar src/some/example/HelloworldTag.java Das weitere Vorgehen hängt davon ab, ob die Desktop- oder Server-Version verwendet wird. (Natürlich funktioniert auch beides). ==== Desktop-Suche ==== //(benötigt regain Version 1.7.9 oder höher)// Damit die Desktop-Suche funktioniert, muss der Tag-Namespace ("my_tag") unter [[de:config:desktopconfiguration.xml]] hinzugefügt werden: net.sf.regain.search.sharedlib net.sf.regain.ui.desktop.config.sharedlib net.sf.regain.ui.desktop.status.sharedlib some.example Damit die generierte .class-Datei geladen wird, können wir sie entweder der regain.jar hinzufügen (wenn Sie sie selbst [[de:project_info:building_regain]]), oder in als ''my_tag.jar'' in den ''web/taglib''-Ordner stecken. jar c0f my_tag.jar some/example/*.class ==== Server-Suche ==== Zuerst müssen wir die neuen Tags deklarieren. Wir erstellen eine Datei ''web/taglib/mytag.tld'' (Name wählbar). (Siehe ''web/server/regain-search.tld'' als Template.) 1.0 1.1 my_tag Example Taglib Shows "Hello, World!" helloworld some.example.server.HelloworldTag empty Dann fügen wir diese Deklaration der JSP hinzu (ganz oben): <%@taglib uri="taglib/mytag.tld" prefix="my_tag" %> Wir müssen noch eine Wrapper-Klasse schreiben (''some/example/server/HelloworldTag.java''): package some.example.server; import net.sf.regain.util.sharedtag.taglib.SharedTagWrapperTag; public class HelloworldTag extends SharedTagWrapperTag { public HelloworldTag() { super(new some.example.HelloworldTag()); } } (Kompilieren am besten mit den original-Sourcen von Regain ... ant runtime-server und dann build/classes und build/included-lib-classes/common als Classpath verwenden.) Jetzt muss Regain nur noch (beide) Klassen laden. Entweder in die .war packen, oder nach dem deployen nach ''WEB-INF/classes'' (some/example/...) oder nach ''WEB-INF/lib'' (als my_tag.jar) kopieren. Der Servlet-Container muss neu gestartet werden. ===== Siehe auch ===== * [[:de:howto]] - Übersicht über alle How-Tos * https://github.com/benjamin4ruby/java-thumbnailer - Thumbnails der Dateien erstellen und anzeigen