====== Unterschiede ====== Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Both sides previous revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
de:howto:add_custom_tag [2011/08/09 11:16] benjamin |
de:howto:add_custom_tag [2024/09/18 08:32] (aktuell) |
||
---|---|---|---|
Zeile 19: | Zeile 19: | ||
**Autor:** | **Autor:** | ||
- | Benjamin https://github.com/benjamin4ruby | + | Benjamin Pick https://github.com/benjaminpick |
===== Download ===== | ===== Download ===== | ||
Zeile 59: | Zeile 59: | ||
==== Desktop-Suche ==== | ==== 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: | Damit die Desktop-Suche funktioniert, muss der Tag-Namespace ("my_tag") unter [[de:config:desktopconfiguration.xml]] hinzugefügt werden: | ||
<code xml> | <code xml> | ||
- | <!-- Register namespaces for Simple Server --> | + | <!-- Register namespaces for Simple Server --> |
- | <simple_register_namespace> | + | <simple_register_namespace> |
- | <!-- Default namespaces: search, config, status --> | + | <!-- Default namespaces: search, config, status --> |
- | <namespace name="search">net.sf.regain.search.sharedlib</namespace> | + | <namespace name="search">net.sf.regain.search.sharedlib</namespace> |
- | <namespace name="config">net.sf.regain.ui.desktop.config.sharedlib</namespace> | + | <namespace name="config">net.sf.regain.ui.desktop.config.sharedlib</namespace> |
- | <namespace name="status">net.sf.regain.ui.desktop.status.sharedlib</namespace> | + | <namespace name="status">net.sf.regain.ui.desktop.status.sharedlib</namespace> |
- | + | <namespace name="my_tag">some.example</namespace> | |
- | <namespace name="my_tag">some.example</namespace> | + | </simple_register_namespace> |
- | </simple_register_namespace> | + | |
</code> | </code> | ||
+ | |||
+ | 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 ==== | ==== 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.) | ||
+ | |||
+ | <code xml> | ||
+ | <?xml version="1.0" encoding="UTF-8" ?> | ||
+ | <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_1.dtd"> | ||
+ | |||
+ | <taglib> | ||
+ | <tlibversion>1.0</tlibversion> | ||
+ | <jspversion>1.1</jspversion> | ||
+ | <shortname>my_tag</shortname> | ||
+ | <info>Example Taglib</info> | ||
+ | <tag> | ||
+ | <info> | ||
+ | Shows "Hello, World!" | ||
+ | </info> | ||
+ | <name>helloworld</name> | ||
+ | <tagclass>some.example.server.HelloworldTag</tagclass> | ||
+ | <bodycontent>empty</bodycontent> | ||
+ | </tag> | ||
+ | </taglib> | ||
+ | </code> | ||
+ | |||
+ | Dann fügen wir diese Deklaration der JSP hinzu (ganz oben): | ||
+ | |||
+ | <code xml> | ||
+ | <%@taglib uri="taglib/mytag.tld" prefix="my_tag" %> | ||
+ | </code> | ||
+ | |||
+ | Wir müssen noch eine Wrapper-Klasse schreiben (''some/example/server/HelloworldTag.java''): | ||
+ | |||
+ | <code 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()); | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | (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.) | ||
- | ===== Offene Punkte ===== | + | 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. |
- | Ideen zur Weiterentwicklung oder bekannte Bugs. | ||