JSP Tag Files in der Preview verfügbar machen

Marsupilami
I'm new here
5 1 1,703

Man kann selbstgeschriebene JSP Tag Files in der Preview des First Spirit Servers verfügbar machen. Dazu lagert man die Tag Files aus, indem man sie in eine Java Archiv Datei packt. Das hat den zusätzlichen Vorteil, dass man sie wiederverwenden kann (siehe http://download.oracle.com/docs/cd/E17477_01/javaee/5/tutorial/doc/bnamu.html ). Hier als abstraktes Beispiel der Tag Library Descriptor:

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.0" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd ">
  <tlib-version>1.0</tlib-version>
  <short-name>default namespace prefix for this library</short-name>
  <uri>urn:a URI that uniquely identifies the tag library</uri>
  <tag-file>
      <name>name of tag file</name>
      <path>/META-INF/tags/example.tag</path>
  </tag-file>
</taglib>

Die Verzeichnisstruktur des Archivs sieht dann folgendermaßen aus:

/META-INF/example.tld

/META-INF/tags/example.tag

Die Taglib kann dann als Web-Resource in einem First Spirit Modul verwendet werden. Dazu braucht man:

  • eine web.xml
  • eine module.xml
  • die Taglib

Die web.xml ist ziemlich einfach gestrickt:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
  <display-name>the name of this web-app</display-name>
  <discription>write whatever you want</discription>
</web-app>

In der module.xml konfiguriert man, wo die Orte, an denen die Resourcen gefunden werden können:

<!DOCTYPE module SYSTEM ../../server/module.dtd>
<module>
    <name>display name</name>
    <version>version numer</version>
    <description>describes the purpose</description>
    <components>
        <web-app>
            <name>name</name>
            <description>description</description>
            <web-xml>web.xml</web-xml>
            <web-resources>
                <resource>lib/example.jar</resource>
            </web-resources>
        </web-app>
    </components>
</module>

In diesem Beispiel soll die web.xml im Wurzel-Verzeichnis gefunden werden und die Web-Resource (das example.jar) im Verzeichnis lib. Das gebaute example.fsm hat dann folgende Struktur

/web.xml

/lib/example.jar

/META-INF/module.xml

Dieses FSM auf dem Server installieren (Admin-GUI -> Server -> Eigenschaften -> Module).

Nun muß die neue Webapp noch den gewünschten Projekten in der Preview verfügbar gemacht werden. Dazu in der Admin-GUI unter Web-Komponenten die/das neu hinzugefügte Lib/Modul im Tab Preview auswählen. Evtl. benötigt man noch weitere Module wie FS-INTEGRATION, falls man in den JSP Tag Files JSTL-Funktionalität benutzt (siehe auch https://community.e-spirit.com/community/developer/blog/2010/07/08/jstl-in-firstspirit-preview-or-st... ).

Jetzt muß man noch den zu verwendenden Aktiver Web-Server auswählen, z.B. den InternalJetty. Falls nicht bereits installiert und aktiviert, muss eben jenes getan werden. Bei Änderungen muss man dem verwendeten Webserver diese erst noch mitteilen, indem man ihn aktualisiert (Button Aktualisieren).

Innerhalb einer JSP wird die Taglib dann folgendermaßen inkludiert:

<%@ taglib prefix="teaser"  uri="urn:example" %>

Getestet auf FS 4.1.51

1 Comment
ckaiser
I'm new here

Hallo Marsupilami,

danke für deine Anleitung. Basierend auf der Anleitung und der Unterstüzung des

FS Supports habe ich es geschafft unsere hausinterne Bibliotheken anzubinden.

Hier noch ein paar Ergänzungen, die ich durchführen mußte:

  • In der module.xml muss noch die TLD mit deklariert werden:
<resource>META-INF/example.tld</resource>
  • In der web.xml habe ich eine URI für meine taglib zusätzlich deklariert.

<web-app>

    ...

    <taglib>

        <taglib-uri>example-tags</taglib-uri>

        <taglib-location>/WEB-INF/example.tld</taglib-location>

    </taglib>   

</web-app>

Damit ist dann der Zugriff auf die taglib über folgenden Code möglich:

<%@ taglib uri="example-tags" prefix="my" %>

<my:taglib arg="one" />

Bei der Installation sollte man daran denken nach einer Aktualisierung der Version auch das

Projekt in der Preview zu aktualisieren:

Server- und Projektkonfiguration / Projekteigenschaften / Web-Komponenten

/ Aktiver Webserver -> Button 'Aktualisieren' und ggf. 'Aktivieren'

Im Anhang noch die komplette module.xml und web.xml:

  • web.xml:

<web-app>

    <display-name>script-use-demo</display-name>

    <discription>Libraries necessary to enable the script-use tag</discription>

 

    <listener>

        <listener-class>my.firstspirit.TagInitialisingListener</listener-class>

    </listener>

   

    <context-param>

        <param-name>my-config-param-1</param-name>

        <param-value>XYZ</param-value>

    </context-param>

   

    <taglib>

        <taglib-uri>example-tags</taglib-uri>

        <taglib-location>/WEB-INF/example.tld</taglib-location>

    </taglib>   

</web-app>

  • module.xml

<!DOCTYPE module SYSTEM ../../server/module.dtd>

<module>

    <name>Name of module</name>

    <version>1.1</version>

    <description>...</description>

    <components>

        <web-app>

            <name>name of webmodule</name>

            <description>...</description>

            <web-xml>web.xml</web-xml>

            <web-resources>

                <resource name="mytaglib" version="1.0">lib/mytaglib-1.0.jar</resource>

                <resource>META-INF/example.tld</resource>

            </web-resources>

        </web-app>

    </components>

</module>

Inhalt des FSM Moduls:

.\lib

.\lib\mytaglib-1.0.jar

.\META-INF

.\META-INF\module.xml

.\META-INF\example.tld

.\web.xml

Gruß

Christian

Getestet mit FS Version Server: 4.2.206.37300 und dem internen Jetty

Version history
Last update:
‎07-13-2010 04:51 AM
Updated by: