Variablen über href

lernst

Grünschnabel
Hallo Leute!

Ich bin ein JSP Anfänger und bin nun auf folgentes Problem gestoßen:

Ich möchte eine Mehrsprachige Seite machen.
Es funktioniert auch alles soweit wenn ich die Unterschiedlichen Fahnen anklicke ändert sich das Menü. Ich arbeite mit mit Session.
Auch im http://localhost:8080/index.jsp erscheint die ausgewählte Sprache!

Nun mein Problem.

Ich rufe z.B über <href ="index.jsp?content=view.jsp">. eine andere Seite im Content auf.
Wenn ich nun auf den Link klicke wird mein Menü wieder zurückgesetz!
Was mache ich falsch!

Besten Dank für eure Hilfe
lernst
 
Ja soll natürlich <a href=.../a> heißen war nur ein Beispiel.
Die links funktionieren ja nur die Variable die die Sprachauswahl enthält wird über die links nicht mit übergeben da liegt glaube ich auch das Problem.

Danke
Ernst
 
Hallo lernst,

allgemein solltest du dir das mit content=seite.jsp abgewöhnen ;-)

Das ist zwar unter PHP (leider) so üblich aber unter JSP hast du bessere Möglichkeiten.

Denk immer an die Regel:

Niemals dem Besucher verraten wie deine Anwendung läuft. Schau dir besser Tiles an und arbeite damit.

In dem Thread:
- http://www.tutorials.de/forum/j2ee/245205-struts-link-navigation.html
haben wir über Tiles gesprochen (da in Verbindung mit Struts, aber Tiles ist auch ohne Struts nutzbar)
 
Tach,

lernst hat gesagt.:
...Es funktioniert auch alles soweit wenn ich die Unterschiedlichen Fahnen anklicke ändert sich das Menü. Ich arbeite mit mit Session....
lernst hat gesagt.:
...Die links funktionieren ja nur die Variable die die Sprachauswahl enthält wird über die links nicht mit übergeben da liegt glaube ich auch das Problem....
Was meinst du mit Session? Speicherst du die Variable im Sessioncontext? Dann brauchst du sie auch nicht mit einer URL übergeben.
Wenn du sie im Sessioncontext speicherst, würde ich drauf tippen, dass die JSP sie nicht korrekt ausliest. Wenn sie nicht im Sessioncontext liegt, kannst du sie ja mal reinlegen oder sie immer als Parameter mit der URL übergeben.

So ganz ohne Sourcen ist das natürlich immer schwer zu sagen... ;)

gruß
THMD
 
Hallo Leute!

Erstmals Danke für die Antworten!
Hier ist mein Code:

Hier meine index.jsp
${param.sprache}" kommt aus der header.jsp wo die Auswahl ist!

<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page session="true"%>

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Sudoku</title>
<link rel="stylesheet" type="text/css" href="main.css"/>
</head>
<body>
<c:set var="sprache" scope="session" value="${param.sprache}"/>
<div id="header">
<jsp:include page="header.jsp" />

</div>

<div id="menu">
<jsp:include page="menu.jsp" />

</div>
<div id="content">
<c:if test="${not empty param.content}">
<jsp:include page="${param.content}"/>
</c:if>

<c:if test="${empty param.content}">
<jsp:include page="default.jsp"/>
</c:if>
</div>
</body>
</html>

------------------------------------------------
In meiner header.jsp hab ich nun die auswahl Felder

<form action="index.jsp" >
<dl>
<dt><input type="image" src="images/deutschland.gif" height="20" width="30" alt="Deutsch" name="sprache" value="Deutsch"/></dt>
<dt><input type="image" src="images/grossbritannien.gif" height="20" width="30" alt="English" name="sprache" value="English"/></dt>
<dt><input type="image" src="images/china.gif" height="20" width="30" alt="Chinesisch" name="sprache" value="Chinesisch"/></dt>

</dl>
</form>

-------------------------------------------
Hier die menu.jsp
Wenn ich im header.jsp die Fahne anklickt wird hier die Sprache richtig angezeigt!
Klick ich nun auf einen Link wird die Sprache bzw. ${param.sprache}zurückgesetz!

<c:choose>
<c:when test="${sessionScope.sprache =='Deutsch'}">
<fmt:setLocale value="de" scope="session" />
</c:when>
<c:when test="${sessionScope.sprache =='English'}">
<fmt:setLocale value="en" scope="session" />
</c:when>
<c:eek:therwise>
<fmt:setLocale value="ch" scope="session" />
</c:eek:therwise>
</c:choose>


<fmt:setBundle basename="resource" scope="session" var="messages" />
<ul>
<li><a href ="<%= response.encodeURL("index.jsp?content=default.jsp")%>"><fmt:message bundle="${messages}" key="menu.home"/> </a></li>
<li><a href ="<%= response.encodeURL("index.jsp?content=sudoku.jsp")%>" ><fmt:message bundle="${messages}" key="menu.spiel"/></a></li>
<li><a href ="<%= response.encodeURL("index.jsp?content=help.jsp")%>" ><fmt:message bundle="${messages}" key="menu.liste"/></a></li>
</ul>


Besten Dank für die Hilfe
Ernst
 
Hallo!

Wenn ich das ganz über Tiles aufbau funktioniert dann die Übergabe automatisch?

Wie sollte dann mein idnex.jsp ausschauen so etwa?

<%@ taglib uri="/WEB-INF/tiles.tld" prefix="tiles" %>
<%@page session="true"%>
<html>
<body>


<tiles:insert attribute="header"/>

<tiles:insert attribute="menu"/>

<tiles:insert attribute="content"/>

</body>
</html>

und meine menu.jsp?


<%@ taglib uri="/WEB-INF/tiles.tld" prefix="tiles" %>

<tiles:insert page="/layout.jsp" flush="true">
<tiles:put name="header" value="/header.jsp"/>
<tiles:put name="body" value="/menu.jsp"/>
<tiles:put name="footer" value="/content.jsp"/>
</tiles:insert>

Könnte das ganz dann so aussehen?

lg
Ernst
 
Tach,

mal abgesehen von Tiles oder nicht Tiles liegt hier dein Problem
lernst hat gesagt.:
<c:set var="sprache" scope="session" value="${param.sprache}"/>

Du übergibts den Parameter in dem du auf eine deiner Flaggen klickst und dadurch die index.jsp aufrufst. Dort wird die Variable auch im Sessioncontext gesetzt.
Wenn du jetzt aber im Menu auf einen Link drückst, rufst du ja wieder die index.jsp auf, die ja dann die eigentliche Seite includiert. Dadurch wird aber auch der <c:set> Tag wieder abgearbeitet. Nur das er jetzt keinen Parameter Sprache mehr hat. Dadurch setzt er die Variable sprache im Sessioncontext auf null und sie ist damit weg.

gruß
THMD
 
Hallo und Danke für die Antowrt!

Wolle sollte ich den am besten die <c:set > einsetzen bzw. wie sollte ich ohne das ich über die index.jsp gehe meinen content verändern?

Besten Dank
Ernst
 

Neue Beiträge

Zurück