tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
18
ZUGRIFFE
7291
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!
    Ich versuche gerade mich in Struts 2 einzuarbeiten. Habe zuvor noch nichts mit Web-Frameworks gemacht. Mittlerweile läuft hier Struts 2 ohne Probleme und ich habe ein paar Beispiele durchgemacht.
    Nun wollte ich aber versuchen eine Seite mit Tiles 2 zu bauen. Hab dazu erstmal gegoogelt und nur folgendes gefunden:
    http://struts.apache.org/2.x/docs/tiles-plugin.html
    http://bridee.blogspot.com/2007/05/s...2-tiles-2.html
    http://www.developpez.net/forums/sho...24&postcount=6

    Also hab ich mich erst mal an die beiden letzten Links gehalten: per Eclipse neues Tomcat Projekt angelegt, struts2-blank.war inportiert und dann wie in den Links oben die Dateien angepasst.
    Wenn ich anschließend aber meinen Tomcat in Eclipse neustarte erhalte ich folgende Exception:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    SCHWERWIEGEND: Error configuring application listener of class org.apache.struts2.tiles.StrutsTilesListener
    java.lang.ClassNotFoundException: org.apache.struts2.tiles.StrutsTilesListener
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1359)
        at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3712)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)]

    Als Listener habe ich folgende Beide ausprobiert:
    org.apache.tiles.listener.TilesListener
    org.apache.struts2.tiles.TilesListener
    Beide Male ClassNotFound.

    Libs sollten alle im Projekt eingebunden sein. Habe sie per "Externe Archive hinzufügen" in Eclipse importiert.

    Freue mich über jede Antwort

    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  2. #2
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!
    Wenn zu meinem obigen Problem keiner eine Lösung weiß, weiß ja jemand vielleicht eine kleine Struts2 Beispielanwendung mit Tiles?
    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  3. #3
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Bist du dir sicher, dass die Lib mit deployt wird? Du hast ein Dynamic Web Project nehm ich an? Dann musst du Libs, die in den COntainer deployt werden sollen noch per Projekt -> Rechtsclick -> Properties -> "irgendwas wie J2EE Dependencies" hinzufügen.

    Dann sollte Eclipse das mit in den Tomcat deployen, wenn du Run as -> Run on Server... machst.

    Gruß
    Ollie
     

  4. #4
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!
    Genau das ist glaub ich das Problem. Bei einem der Beispiele war etwas dabei, dass man eine Abhängigkeit eintragen muss, dort war aber nur beschrieben wie das mit Maven geht.

    Unter den Projekt Eigenschaften hab ich nichts mit J2EE Dependencies. Ich verwende das Sysdeo-Plugin. Das Projekt ist ein Tomcat-Projekt.

    Das Einzige was ich unter den Eigenschaften gefunden hab ist dass ich da den DevLoader aktivieren kann und ich dort meinen externen Libs auswählen kann. Die Klasse findet er aber trotzdem nicht.

    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  5. #5
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Hm... mir is rätselhaft, warum alle Welt immer für so Standardaufgaben irgendwelche extravaganten Plugins benutzt. Sowas kann Eclipse mit dem WTP von Haus aus.

    Tut mir leid, mit dem Plugin kenn ich mich nicht aus...

    Gruß
    Ollie
     

  6. #6
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!

    Schonmal Danke für deine Hilfe

    Hab das Ganze gerade mit dem WTP ausprobiert:
    -Dynamic Web Project angelegt
    -Struts-blank importiert
    -web.xml und struts.xml angepasst
    -Projekt-Eigenschaft -> J2EE Module Dependecies -> externe Jars hinzugefügt
    -Server eingerichtet (Tomcat 5.5)
    -Run on Server
    => java.lang.ClassNotFoundException: org.apache.tiles.listener.TilesListener
    bzw: java.lang.ClassNotFoundException: org.apache.struts2.tiles.TilesListener

    Hast du vielleicht noch eine Idee?

    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  7. #7
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    So, mittlerweile hab ichs geschafft, dass die Library anscheinend geladen wird, zumindest habe ich keine ClassNotFoundException mehr. Worans jetz lag kann ich aber nicht genau sagen.

    Aber mittlerweile habe ich das nächste Problem: beim Starten des Servers erhalte ich jetzt folgende Exception:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    SCHWERWIEGEND: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
    java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
        at org.apache.tiles.definition.UrlDefinitionsFactory.init(UrlDefinitionsFactory.java:118)
        at org.apache.tiles.impl.BasicTilesContainer.initializeDefinitionsFactory(BasicTilesContainer.java:185)
        at org.apache.tiles.impl.BasicTilesContainer.init(BasicTilesContainer.java:121)
        at org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesContainerFactory.java:232)
        at org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesContainerFactory.java:198)
        at org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:163)
        at org.apache.tiles.web.startup.TilesListener.createContainer(TilesListener.java:90)
        at org.apache.struts2.tiles.StrutsTilesListener.createContainer(StrutsTilesListener.java:66)
        at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:57)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

    Nach ein bischen googeln bin ich auf folgende Lösung gestoßen:
    Code :
    1
    2
    3
    
    You have to put in "web.xml" the "definitions-config" init parameter, 
    that points to your Tiles definitions xml file or you can use the 
    default name, under /WEB-INF/tiles.xml
    Ich verwende aber eben dieses tiles.xml im WEB-INF Verzeichnis!? Nur eclipse bringt mir bei eben diesem File eine Warnung dass es den Doctype nicht finden kann:
    Doctype:
    Code :
    1
    2
    3
    
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
           "http://struts.apache.org/dtds/tiles-config_2_0.dtd">

    Warnung:
    Code :
    1
    
    The file cannot be validated as the XML Schema "http://struts.apache.org/dtds/tiles-config_2_0.dtd" that is specified as describing the syntax of the file cannot be located.

    Bin über jede Hilfe dankbar.
    flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  8. #8
    Avatar von Oliver Gierke
    Oliver Gierke Oliver Gierke ist offline Mitglied Rubin
    Registriert seit
    Dec 2003
    Ort
    Mannheim
    Beiträge
    1.457
    Das is dann wohl ein Eclipse lokales Warning... Bei Apache sind die DTD URIs meistens virtuell, d.h. die existieren da nicht wirklich unter der URL.

    Du kannst über Preferences -> Web and XML -> XML Catalog aber einfach DTD URIs auf lokale DTDs mappen. Die DTD sollte mit in einem der JARs liegen.

    Gruß
    Ollie
     

  9. #9
    moenicke moenicke ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Berlin
    Beiträge
    16
    Hallo Flo,

    ich hatte gerade einen länglichen Beitrag für Dich zusammen gestellt, der mir leider per Timeout weggeschossen wurde.

    Ich muss ihn also offline wieder neu formulieren.
    Das schaffe ich aber erst am Wochenende.

    Als kurzen Hinweis vorab:

    Tiles 2 ist nicht mit Struts 2 kompatibel, man muss das mitgelieferte Plugin von Struts 2 verwenden.
    Das Plugin stellt einen Zwischenstand auf dem Weg nach Tiles 2 dar, der irgendwann Anfang des Jahres eingefroren wurde. Dadurch kommt es zu einer seltsamen Vermischung alter und neuer Deklarationen und Syntaxversionen.

    Erläutere ich in meinem nächsten Beitrag am WE.

    Bis dahin Ohren steif halten - mich hat die Lösung einige Wochen gekostet!

    Gruß,
    moenicke
     

  10. #10
    SYn4pSE SYn4pSE ist offline Mitglied
    Registriert seit
    Jun 2006
    Beiträge
    19
    Also bei mir ist Tiles 2 mit Struts 2 kompatibel. Hat zwar ein wenig gedauert aber jetzt funktioniert ‘s!
    In den „lib“-Ordner musste ich…
    … commons-beanutils-1.6.jar
    …commons-collections-3.2.jar
    …& commons-digester-1.8.jar
    neben den üblichen „tiles“-jars haun.

    In die „web.xml“ kommt dann folgendes...
    Code :
    1
    2
    3
    4
    5
    
    <listener>
      <listener-class>
          org.apache.struts2.tiles.StrutsTilesListener
      </listener-class>
    </listener>

    In die „struts.xml“ kommt…
    Code :
    1
    2
    3
    
    <result-types>
       <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>   
    </result-types>
    und deine action(s) muss/müssen hier angepasst werden.
    Code :
    1
    2
    3
    
    <action name="[I]ACTION-AUFRUF[/I]" class="[I]PAKET.ACTIONKLASSE[/I]">
      <result type="tiles">[I]TILES-AUFRUF[/I]</result>
    </action>

    Jetzt brauchst du noch ‘ne „tiles.xml“ (kommt ins „WEB-INF“-Verzeichnis) mit Beispielsweise folgendem Inhalt...
    Code :
    1
    2
    3
    4
    5
    6
    
    <tiles-definitions>
        <definition name="[I]TILES-AUFRUF[/I]" template="[I]/LAYOUT.JSP[/I]">
            <put-attribute name="navigation" value="[I]/NAVIGATION.JSP[/I]"/>
            <put-attribute name="body" value="[I]/WAS_AUCH_IMMER.JSP[/I]"/>
        </definition>
    </tiles-definitions>

    Fehlt nur noch die Seite mit dem Layout, welche in diesem Fall ungefähr so aussehen kann….
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
    <html>
    <head>
    </head>
    <body>
    <table>
        <tr>
            <td><tiles:insertAttribute name="navigation" /></td>
            <td><tiles:insertAttribute name="body" /></td>
        </tr>
    </table>
    </body>
    </html>


    Hoffe ich konnte helfen....

    MfG,
    SYn4pSE
    Flo[H] bedankt sich. 

  11. #11
    Flo[H] Flo[H] ist offline Mitglied Brokat
    Registriert seit
    Aug 2002
    Beiträge
    399
    Hallo!
    Danke für die Antworten, konnte mich in letzter Zeit nur wenig mit dem Problem befassen.
    Das eine Struts2/Tiles2 Projekt läuft immernoch nicht... Eingetragen (web.xml, tiles.xml, ...) sind alle gemacht, trotzdem erhalte ich beim Starten des Server folgende Exception:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    
    SCHWERWIEGEND: Exception sending context initialized event to listener instance of class org.apache.struts2.tiles.StrutsTilesListener
    java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
        at org.apache.tiles.definition.UrlDefinitionsFactory.init(UrlDefinitionsFactory.java:118)
        at org.apache.tiles.impl.BasicTilesContainer.initializeDefinitionsFactory(BasicTilesContainer.java:185)
        at org.apache.tiles.impl.BasicTilesContainer.init(BasicTilesContainer.java:121)
        at org.apache.tiles.factory.TilesContainerFactory.initializeContainer(TilesContainerFactory.java:232)
        at org.apache.tiles.factory.TilesContainerFactory.createTilesContainer(TilesContainerFactory.java:198)
        at org.apache.tiles.factory.TilesContainerFactory.createContainer(TilesContainerFactory.java:163)
        at org.apache.tiles.web.startup.TilesListener.createContainer(TilesListener.java:90)
        at org.apache.struts2.tiles.StrutsTilesListener.createContainer(StrutsTilesListener.java:66)
        at org.apache.tiles.web.startup.TilesListener.contextInitialized(TilesListener.java:57)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3764)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:448)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
    Dieses Projekt nutzt Struts 2.0.9 sowie Tiles 2.0.4.

    Ich habe im Internet aber ein anderes leeres Struts/Tiles Projekt gefunden, welches Struts 2.0.6 und Tiles 2.0 nutzt. Dieses Projekt kann ich ohne Probleme mit meinem Server starten und es funktioniert auch.

    Über jeden Hinweis wie ich die aktuelle Struts / Tiles Version zum laufen bekomme würd ich mich freuen.

    mfg flo
     
    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
    -Rich Cook

  12. #12
    SYn4pSE SYn4pSE ist offline Mitglied
    Registriert seit
    Jun 2006
    Beiträge
    19
    java.lang.NoClassDefFoundError: org/apache/commons/digester/Rule
    commons-digester-1.8.jar in den "lib"-Ordner stecken.... (kriegste auf der apache Seite).

    Kann gut sein das du danach weitere Fehler dieser Art bekommst; dann einfach die zugehörigen *.jar-Files ins Projekt mit einbinden (stehen in meinem vorherigem Post).

    MfG
    Syn4pSE
     

  13. #13
    moenicke moenicke ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Berlin
    Beiträge
    16
    Hallo Flo,
    leider habe ich es nicht früher geschafft.

    Vorab noch eine Frage an SYn4pSE:
    Auf welche Tiles-Version beziehst Du Dich?
    Derzeit aktuelle Version von Tiles 2 ist v. 2.0.4 (beta); meine Erfahrungen beruhen auf v. 2.0.3 .
    Außerdem habe ich Struts 2.0.9 noch nicht installiert, das folgt in den nächsten Tagen und dann werde ich Deine Empfehlungen mal ausprobieren. Ich bin gespannt.

    Ich kann derzeit nur zum Stand Struts 2.0.6 und Tiles 2.0.3 berichten.
    Hierzu habe ich Anfang Mai von einem der beteiligten Entwickler (Antonio Petrelli) die ausdrückliche Stellungnahme erhalten, dass diese beiden Versionen nicht miteinander kompatibel seien.
    http://www.nabble.com/InsertAttribut...html#a10389529

    Allerding enthält das Struts 2 Paket selbst eine frühe Tiles-Version, die offenbar zu einem relativ frühen Zeitpunkt aus der als Standalone-Produkt geplanten Tiles 2-Entwicklung ausgekoppelt wurde. Diese wird offiziell als "Struts 2 Tiles" bezeichnet.

    Daraus ergeben sich teils kuriose Folgen. In einigen Bereichen nutzt dies Struts 2-eigene Fassung noch die ältere Tiles-Syntax, in anderen hingegen bereits die neuere.
    Auf die passende Kombination bin ich nur durch Zufall gestoßen, als ich nach der negativen Antwort (s.o.) Rückbau betrieben habe. Dazu unten mehr.

    Die Dokumentation zu Struts 2 Tiles ist mit der zum Schluss rasanten Entwicklung von Struts 2 Anfang des Jahres offenbar nicht ganz mitgekommen. Jedenfalls sind die Beispiele dort in einigen Bereichen veraltet.

    Aber jetzt mal systematisch, wie es bei mir funktioniert.

    Zunächst ist darauf zu achten, das Tiles 2 die Servlet-Spezifikation v 2.4 oder höher voraussetzt. Der Kopf des Deployment-Deskriptors (web.xml) muss daher folgendermaßen aussehen:

    Code :
    1
    2
    3
    4
    
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
              version="2.4">

    Weiterhin müssen folgende Abschnitte in web.xml eingefügt werden:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    <filter>
        <filter-name>Tiles Filter</filter-name>
        <filter-class>org.apache.tiles.filter.TilesFilter</filter-class>
        <init-param>
            <param-name>org.apache.tiles.DEFINITIONS_CONFIG</param-name>
            <param-value>/WEB-INF/tiles-defs.xml</param-value>
        </init-param>
    </filter>

    Code :
    1
    2
    3
    4
    
    <init-param>
        <param-name>chainConfig</param-name>
        <param-value>org/apache/struts/tiles/chain-config.xml</param-value>
    </init-param>

    Code :
    1
    2
    3
    
    <listener>
        <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class>
    </listener>

    Anpassen der Package-Definitionen in struts.xml

    Die packages, die mit Tiles arbeiten sollen, müssen modifiziert werden, indem das Attribut 'extends' auf "tiles-dafult" anstelle von "struts-default" verweist.

    Code :
    1
    2
    3
    4
    5
    
    <struts>
        <package name="[package-name]" extends="tiles-default">
           ...
        </package>
    </struts>

    Damit wird auf die Datei 'struts-plugin.xml' in 'struts2-tiles-plugin-2.0.6.jar' Bezug genommen. Das dortige Package "tiles-default" erweitert seinerseits "struts-default" durch einen <result-type>-Eintrag, der auf TilesResult verweist.

    Soweit die Basis-Konfiguration.
    Die Anwendung von Tiles dreht sich um zwei Dateitypen, einmal die Definitionsdatei 'tiles-defs.xml' und zum anderen die Template-JSPs. Und hier wird's kurios.
    Während die JSPs bereits die neuere Syntax von Tiles 2 (v 2.0.3 aufwärts) verwenden und die Definitionsdatei bereits den modernen Namen 'tiles-defs.xml' trägt, wird in der Definitionsdatei noch die ältere Syntax wie bei Tiles 1 verwendet, also obacht!

    Aufbau der Definitionsdatei tiles-defs.xml

    Wichtig ist die Angabe der richtigen DTD:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <!DOCTYPE tiles-definitions PUBLIC
           "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
           "org/apache/struts/resources/tiles-config_2_0.dtd">
           
    <tiles-definitions>
           <definition name="basicLayout" template="/jsp/tiles/hv_main.jsp">
                  <put name="header" type="template" value="/jsp/tiles/header.jsp" />
            </definition>
    </tiles-definitions>

    Aufbau der Template-JSPs

    Wichtig ist hier vor allem die neue URI, die sich auf tiles.apache.org anstelle von struts.apache.org bezieht. Entsprechend ist hier die neue Syntax zu verwenden.
    Die URI muss natürlich in allen Template-JSPs enthalten sein:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>
     
    <html>
        <head>
        </head>
        
        <body>
            <tiles:insertAttribute name="header" />
            <div id="body">this is the body</div>
        </body>
    </html>

    Ist 'ne Menge Holz, ich weiß.
    Aber vor allem hast Du hier die korrekten Header bzw. DTD-Verweise für die Steuerdateien.
    Die richtige Kombination herauszubekommen, ist wahrlich ein Glücksspiel.

    Der Aufwand lohnt sich aber allemal.
    Tiles sind eine super Ergänzung, vor allem zu dem genialen Wurf von Struts 2.
    Meine Hochachtung an die Entwickler. Um diese selbst zu zitieren:
    "Struts 2 is what Struts always has been intended to be".

    Viel Glück,
    moenicke
    Flo[H] bedankt sich. 

  14. #14
    SYn4pSE SYn4pSE ist offline Mitglied
    Registriert seit
    Jun 2006
    Beiträge
    19
    Benutze folgende Versionen...

    Tiles-Version => 2.0.4
    Struts-Version => 2.0.9
     

  15. #15
    moenicke moenicke ist offline Mitglied
    Registriert seit
    Sep 2007
    Ort
    Berlin
    Beiträge
    16
    OK SYn4pSE, werde ich demnächst probieren.
    Wäre ja schön, wenn das ausgekoppelte Tiles 2 wieder mit Struts 2 kompatibel wäre.
     

Ähnliche Themen

  1. Struts Modules und tiles
    Von sandra1976 im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 24.07.08, 16:46
  2. Tiles / Struts: Error-Seiten werden nich tin das Tiles Framework eingebettet
    Von Tservarius im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 02.01.07, 16:36
  3. Struts Tiles in verteilten Anwendungskomponenten
    Von cengizhdde im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 22.05.05, 23:14
  4. Struts und Tiles
    Von majobau im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 19.04.05, 16:48
  5. struts tiles
    Von Franz Degenhardt im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 2
    Letzter Beitrag: 09.06.04, 15:07