ERLEDIGT
JA
JA
ANTWORTEN
7
7
ZUGRIFFE
948
948
EMPFEHLEN
-
23.05.06 18:04 #1
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
-
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
-
25.05.06 14:23 #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
Dann kannst du deine Seiten follgendermassen aufbauen: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>
Beispiel die seite superheftig.jsp
Jetzt hast du 2 Seiten definiert die per "put" in das vorrher definierte "insert" hineingeschoben werden.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>
(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!
-
25.05.06 15:04 #4
Vielen Dank..
Die Quelltexte waren sehr hilfreich !
Gruß
Aaron
-
25.05.06 15:23 #5
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ß
AaronGeändert von NetPerformance (25.05.06 um 15:27 Uhr)
-
25.05.06 16:30 #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!
-
25.05.06 16:36 #7
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
-
25.05.06 18:18 #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"> <tiles
ut name="navi" value="/WEB-INF/tiles/eineseite/navi.jsp" /> <tiles
ut 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
-
Sequentielle Navigation mit Struts?
Von tomkn im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 9Letzter Beitrag: 07.08.07, 09:22 -
Zusammensetzung eines Link in Struts
Von JADO im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 1Letzter Beitrag: 30.08.06, 01:44 -
Struts: Parameter in Link übergeben?
Von alingex im Forum JavaAntworten: 0Letzter Beitrag: 22.06.06, 23:18 -
Link Eigenschaften nur für die Navigation
Von SimonErich im Forum CSSAntworten: 1Letzter Beitrag: 15.02.06, 21:58 -
[Struts] Sprache ändern mit einem Klick auf einen Link
Von Hayes im Forum Enterprise Java (JEE, J2EE, Spring & Co.)Antworten: 3Letzter Beitrag: 23.11.04, 10:05





Zitieren
Login





