tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
7
ZUGRIFFE
948
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von NetPerformance
    NetPerformance NetPerformance ist offline Mitglied Brokat
    Registriert seit
    Aug 2003
    Beiträge
    409
    Hallo,

    Ich habe eine Struts Seite folgendermaßen aufgebaut
    Screenshot: http://www.aaron.de/test/navigation.gif

    Wie muss ich theoretisch vorgehen, wenn ich das folgende Szenario erzielen möchte:

    Ich klicke auf "Navi 1" und innerhalb von "content.jsp" wird "seite_1.jsp" geladen.
    Ich klicke auf "Navi 2" und innerhalt von "content.jsp" wird "seite_2.jsp" geladen.

    usw.

    Bis jetzt habe ich nur einfache forwards gemacht. Wenn ich forwarde, wird "main.jsp" ersetzt und nicht "content.jsp".

    Gruß und Dank im Vorraus
    Aaron
     

  2. #2
    chaertl chaertl ist offline Mitglied
    Registriert seit
    May 2005
    Beiträge
    17
    Hallo Aaron,

    was du verwenden willst scheint mir eine Art "embedded Frame" zu sein. Ob das mit Struts hinzubekommen ist kann ich jetzt auch nicht sicher sagen. Da würde ich dir empfehlen in der Doku zum Tag <html:link /> aus der html-Taglib nachzusehen. Evtl gibt es da ein Target-Attribut und so kann man das dann vielleicht machen.

    Ein andere Methode wäre aber der Einsatz von Tiles. Die Seite wird zwar immer neu geladen, aber z.B. Navigation, Header und Footer müssen nur einmal "includiert" werden. Den content kannst du dann immer austauschen lassen. Schau dir das mal an, vielleicht ist das das richtige für dich.

    Grüße
    Christian
     

  3. #3
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    Kann nur das unterstreichen was Chaertl gesagt hat.

    Das was du vorhast, ist das gleiche (und viel mehr) was Tiles dir bietet. Gerade im zusammenhang mit Struts ist Tiles die richtige Lösung


    Kurz: du bastelst dir ein Template und speicherst es z.b unter WEB-INF/templates/base.jsp

    HTML-Code:
    <%@ page language="java"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-tiles" prefix="tiles" %>
    
    <html:html locale="true">
    <head>
    <html:base />
    </head>
    <body>
    <table border="1" width="600" cellspacing="5">
    <tbody>
    <tr>
         <td><tiles:insert attribute="navi" /></td>
        <td width="600"><tiles:insert attribute="content" /></td>
    <tr>
    </tbody>
    </table>
    </body>
    </html:html>
    Dann kannst du deine Seiten follgendermassen aufbauen:
    Beispiel die seite superheftig.jsp

    HTML-Code:
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    <tiles:insert page="/WEB-INF/templates/base.jsp" flush="true">
     <tiles:put name="navi" value="/WEB-INF/tiles/eineseite/navi.jsp" />
      <tiles:put name="conent" value="/WEB-INF/tiles/eineseite/superheftigcontent.jsp" />  
    </tiles:insert>
    Jetzt hast du 2 Seiten definiert die per "put" in das vorrher definierte "insert" hineingeschoben werden.
    (Gibt noch eine anderen Weg die seiten zu deklarieren).

    Jetzt kannst du die Teile navi.jsp bzw superheftigcontent.jsp mit deinem Zeuch füllen.
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  4. #4
    Avatar von NetPerformance
    NetPerformance NetPerformance ist offline Mitglied Brokat
    Registriert seit
    Aug 2003
    Beiträge
    409
    Vielen Dank..

    Die Quelltexte waren sehr hilfreich !

    Gruß
    Aaron
     

  5. #5
    Avatar von NetPerformance
    NetPerformance NetPerformance ist offline Mitglied Brokat
    Registriert seit
    Aug 2003
    Beiträge
    409
    Frage:

    So wie du das Ganze vorgeschlagen hast, muss ich in jede *.jsp Datei das layout bzw. Template einbinden.
    Um das Einbinden des Templates sauberer zu gestalten, hat man die Möglichkeit, das Template über tiles-definition an die entsprechenden *.jsp Seiten zu vererben.

    Hier habe ich unter kooperation.default die template Seite angegeben und per extends an kooperation.index vererbt.

    tiles-defs.xml
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE tiles-definitions PUBLIC
    "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
    "http://jakarta.apache.org/struts/dtds/tiles-config_1_1.dtd">
     
    <tiles-definitions>
        
        <!-- Base Tiles Definition -->
        <definition name="kooperation.default" path="layout.jsp">
            <put name="navigation" value="navigation.jsp" />
            <put name="content" value="welcome.jsp" />
        </definition>
        
        <definition name="kooperation.index" extends="kooperation.default">
        </definition>
        
    </tiles-definitions>

    Jetzt muss ich in der index.jsp kooperation.index bzw. das Layout aufrufen.

    Wie kann ich das machen ?

    Gruß
    Aaron
    Geändert von NetPerformance (25.05.06 um 15:27 Uhr)
     

  6. #6
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    definiere in der struts-config.xml ein mapping für die seite "kooperation.index"
    und forwarde in deiner action darauf.

    http://www.lifl.fr/~dumoulin/tiles/d...#_Toc521292387

    da steht noch einiges dazu.
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

  7. #7
    Avatar von NetPerformance
    NetPerformance NetPerformance ist offline Mitglied Brokat
    Registriert seit
    Aug 2003
    Beiträge
    409
    Danke für den Tip. Ich werds gleich versuchen.
    Jedoch würde mich interessieren, warum ich überhaupt mappen muss ?!
    Wenn ich index.jsp starte, soll das Layout aus tiles-defs.xml angezeigt werden.
    Warum wird hier ein Action benötigt ? Ich klicke nicht auf irgendwelche Buttons.

    Gruß
    Aaron
     

  8. #8
    Registriert seit
    Mar 2001
    Ort
    München
    Beiträge
    4.785
    nun du bist über tiles-definitions gegangen. Du kannst auch so wie ich das gezeigt habe die Definitionen direkt in die jsp schrieben dann brauchst du nichts mappen.


    sprich in die index.jsp:
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %> <tiles:insert page="/WEB-INF/templates/base.jsp" flush="true"> <tilesut name="navi" value="/WEB-INF/tiles/eineseite/navi.jsp" /> <tilesut name="conent" value="/WEB-INF/tiles/eineseite/superheftigcontent.jsp" /> </tiles:insert>

    dann brauchst du das nicht in tiles-definitions deklarieren.

    Die tiles-definitions sorgt ja dafür das du nicht für alle .jsp's JSP dateien anlegen musst, sondern das er eben aus dieser konfiguration herausliest welche teile er verwendet.
    Du hast beide möglichkeiten.
     
    Erst wenn der letzte Programmierer eingesperrt...
    ...und die letzte Idee patentiert ist, werdet ihr merken, dass Anwälte nicht programmieren können.
    -------------------
    chris: hey Tom hast du eigentlich ne Freundin
    jdar: ich bin tutorials.de Mod!

Ähnliche Themen

  1. Sequentielle Navigation mit Struts?
    Von tomkn im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 9
    Letzter Beitrag: 07.08.07, 09:22
  2. Zusammensetzung eines Link in Struts
    Von JADO im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 30.08.06, 01:44
  3. Struts: Parameter in Link übergeben?
    Von alingex im Forum Java
    Antworten: 0
    Letzter Beitrag: 22.06.06, 23:18
  4. Link Eigenschaften nur für die Navigation
    Von SimonErich im Forum CSS
    Antworten: 1
    Letzter Beitrag: 15.02.06, 21:58
  5. [Struts] Sprache ändern mit einem Klick auf einen Link
    Von Hayes im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 3
    Letzter Beitrag: 23.11.04, 10:05