# Struts2: Probleme mit Links aus Packages raus



## oetzi (4. Jun 2009)

Nabend zusammen,

habe bei Struts2 ein Problem mit Verlinkungen.
Auf der Startseite habe ich einen Link, der auf eine Seite 123 aus dem paket xyz zeigt.

Auf der dortigen Seite möchte ich dann einen Link platzieren, der zurück auf die Startseite zeigt.

Das Problem ist jetzt, dass wenn ich zurück auf der Startseite bin, jeder Link den Zusatz /xyz/ bekommt und somit natürlich nicht mehr über die struts.xml aufgelöst werden kann.

Mhh, war das jetzt verständlich genug beschrieben? 

Kann mir wer helfen, wie ich dieses Problem umgehen kann?

Schönen Gruß
oetzi


----------



## oetzi (5. Jun 2009)

so, eine Nacht drüber geschlafen und schon gehts 

einfach dem result ein type='indirect' mitgeben.

            <action name="start">
                <result type="redirect">/index.jsp</result>
            </action>


----------



## oetzi (7. Jun 2009)

Zu früh gefreut 

Ich beschreibe das Problem nochmal:
Wenn ich das erste mal auf meine Seite gehe und z.b. auf Registrieren klick, wird folgende URL aufgerufen:
http://localhost:8080/DJ/user/register.action
Wenn ich allerdings dann von dieser Seite aus auf eine Seite klicke, die zu einem anderen Paket gehört, sieht der Link so aus:
http://localhost:8080/DJ/user/start/gross.action
Dieses "user" dort gehört da nicht hin und sorgt dafür, dass natürlich der Dispatcher das ganze nicht auflösen kann.

Wäre für Hilfe sehr dankbar!

Gruß
oetzi

PS: Warum kann man hier im Forum eigentlich keine Beiträge editieren??


----------



## oetzi (9. Jun 2009)

kein struts profi hier?


----------



## HLX (10. Jun 2009)

Ich habe noch nicht mit Struts 2 gearbeitet, aber in Struts 1 konnte man forwards mit  einem "/" beginnen, so dass der Pfad relativ zum ServletContext gelesen wurde.

PS: du kannst deine Beiträge nur eine gewisse Zeit editieren.


----------



## Noctarius (10. Jun 2009)

HLX hat gesagt.:


> Ich habe noch nicht mit Struts 2 gearbeitet, aber in Struts 1 konnte man forwards mit  einem "/" beginnen, so dass der Pfad relativ zum ServletContext gelesen wurde.
> 
> PS: du kannst deine Beiträge nur eine gewisse Zeit editieren.



Ist in Struts2 auch noch so. Hast du (@oetzi) eventuell mal deine Struts-Config mit den Mappings und das JSP wo es nicht funktioniert?


----------



## oetzi (10. Jun 2009)

hey, sind ja doch struts profis da.Das freut mich. 

@HLX: Forwards benutze ich gar nicht, oder meinst du damit das "forwarden" was struts durch die struts.xml macht?

Unten seht ihr ausschnittsmäßig die jsp und struts.xml.
Was mir gerade so eingefallen ist:
Die navi.jsp wird von jeder Seite, die sie nutzen will included. Ist jetzt nur so ein Gedanke, aber könnte dabei irgendwas schief laufen?

Danke schonmal!

Also:
Meine navi.jsp sieht so aus:
<a href="<s:url action='user/register' />">Registrieren
<a href="<s:url action='user/login'/>">Login

Meine struts.xml zu diesem Teil so:
<package name="user" namespace="/user" extends="struts-default">
..<action name="register">
..<result>/jsp/user/register.jsp</result>
</action>

<action name="do_register" class="user.Register">
..<result name="SUCCESS">/jsp/user/register_success.jsp</result>
..<result name="input">/jsp/user/register.jsp</result>
</action>

<action name="login">
..<result>/jsp/user/login.jsp</result>
</action>

<action name="do_login" class="user.Login">
..<result name="SUCCESS">/jsp/user/register_success.jsp</result>
..<result name="input">/jsp/user/login.jsp</result>
</action>


----------



## Noctarius (10. Jun 2009)

Wie wäre es wenn dein Link so aussähe:
<a href="<s:url action='login'/>">Login</a>

oder 
<a href="<s:url action='register'/>">Register</a>


Immerhin willst du ja auf eine Action mappen


----------



## oetzi (10. Jun 2009)

ne so geht es leider gar nicht.
die actions gehören ja alle einem package an, somit muss doch dann das "user/", etc. davor.

Da ich mich im Moment in Struts2 am einarbeiten bin, mache ich alles so, wie im Buch "Struts 2 im Einsatz" und da ist es auch so beschrieben.
Was mich natürlich leider kein Stück weiterbringt 

Noch eine Idee, woran es liegen könnte?

mfg
oetzi


----------



## oetzi (12. Jun 2009)

Endlich hab ichs!!
Und falls noch jemand das Problem hat:

So muss die Syntax des URL-Tags aussehen:
<s:url namespace='/user' action='register' />
Wichtig ist der "/" am Anfang des namespaces.

Schönes Wochenende!


----------

