2016-06-22 11 views
0

Ich möchte den Wert einer rowNo von einer JSP-Datei an eine andere JSP-Datei übergeben (um Bild in dieser Zeile anzuzeigen), indem Sie request.setAttribute verwenden() und request.getAttribute(), wenn der Benutzer auf einen Link klickt.So verwenden Sie request.setAttribute(), um Wert festzulegen und zu übergeben, indem Sie auf einen Link klicken

Aber wenn ich versuche request.getAttribute() auf zweite jsp Seite nutzen zu können gibt es folgende Ausnahme: org.apache.jasper.JasperException: java.lang.NumberFormatException: null

Auf Seite index.jsp I hat:

<%! 
int temp = 1; 

%> 

<a href="single.jsp" onclick="<%= request.setAttribute("val", temp) %>" > 
<i class="glyphicon glyphicon-menu-right icon"></i> </a> 

Und auf single.jsp Seite:

<% 

dbConnect con = new dbConnect(); 
ResultSet r = con.getConnection().executeQuery("select * from tblpic "); 

String tp = (String) (request.getAttribute("val")); 

int i = Integer.parseInt(tp); 

r.absolute(i); 

%> 

<div class="thumb-image"> <img src="<%= r.getString(2) %>" data-imagezoom="true" class="img-responsive"> </div> 

r.absolute (i) verwendet wird, um diese bestimmte Zeile in der Tabelle zu bewegen.

Ich habe diese Datei auf beiden jsp Seiten hinzugefügt (ich weiß nicht, es notwendig ist oder nicht) <% @ page import = „javax.servlet.http.HttpServletRequest“%>

an dem ich arbeite Net Beans und Struts Framework.

+0

Kashi ließ einen JSP Daten an ein Servlet senden. Leiten Sie dann die Daten von diesem Servlet zum zweiten jsp weiter. Auch das Schreiben von Java wird in jsps stark abgemahnt. Mach die Logik in Servlets und zeige die Daten nur in jsps. Nein, diese Importanweisung ist nicht notwendig. –

+0

@FarazDurrani danke, kannst du mir bitte das Beispiel in meinem Fall geben. – Kashiii

Antwort

3

Sie serverseitigen Code gemischt haben und Client-Seite Code zusammen. "request" ist ein Java-Objekt und Teil der Bearbeitung von Servlet-Anfragen. Es funktioniert nur serverseitig beim Rendern von JSP im Servlet-Container.

"onclick" ist ein Java-Skript-Klick-Trigger, der auf der Browserseite ausgeführt wird.

Sobald die Seite angezeigt wird, ist "Anfrage" nicht Logger gültig. und beim Anklicken der neuen Anfrage wird ein neues Objekt der Anfrage erstellt.

Für Sie können Parameterargument einfach zu Jsp übergeben wie folgt.

auf den ersten jsp:

<a href="single.jsp?val=temp" >

auf dem zweiten jsp:

<%=request.getParameter("val")%>

+0

nicht erlaubt Typen Ich habe dies versucht und kam mit dieser Ausnahme auf: javax.servlet .ServletException: java.sql.SQLException: Kann keine absolute Position zu Zeile 0 – Kashiii

+0

Ich weiß, dass es wegen r.absolute() ist. Ich habe Temp Variable oben mit 1 initialisiert, aber dieser Wert ist nicht bestanden und der Wert auf der anderen Seite ist 0 oder NULL. Ich versuche sogar, konstant zu gehen, aber auf der zweiten Seite immer noch NULL zu bekommen. – Kashiii

+0

es funktioniert jetzt :) – Kashiii

1

Ich würde session.setAttribute() statt request.setAttribute() bevorzugen, um den Wert von einem jsp zum anderen zu übergeben.

So wird Ihr Code sein:

<a href="single.jsp" onclick="<%= session.setAttribute("val", temp) %>" > 

Und

String tp = (String) (session.getAttribute("val")); 
+0

Ich schrieb dies aber es gibt folgende Fehler: Methode setAttribute in Schnittstelle Http kann nicht auf bestimmte Arten angewendet werden .... Required: string, Objekt Gefunden: keine Argumente – Kashiii

+0

In JSP, Sitzung ist ein implizites Objekt vom Typ Http Also können wir es direkt benutzen. Habe meine Antwort aktualisiert. – PVR

+0

funktioniert immer noch nicht, gibt jetzt mehr Fehler – Kashiii

1

Sie sind Einstellwerte in Anfrage Anwendungsbereich. Auf Anfrageumfangsattribute kann nur in derselben Anfrage zugegriffen werden. Immer wenn der Endbenutzer auf den Link klickt (wird von bereitgestellt), wird eine neue Anforderung generiert, wodurch Sie die Attribute verlieren, die Sie in der vorherigen Anfrage festgelegt haben.

das Problem lösen Sie

1) URL-Weiterleitung von Piyush Aghera wie erklärt

2) Sie können den Wert in der Sitzung, die von PVR wie erklärt tun konnten

3) Wenn Sie Ich bevorzuge es, die Werte nur im Anforderungsattribut zu speichern, dann würde ich vorschlagen, dass Sie RequestDispatcher verwenden, um Ihre Anfrage weiterzuleiten. Dies würde funktionieren, wenn Ihre Anfrage auf der nächsten Seite gleich bleiben würde.

+0

Können Sie mir bitte das Beispiel des 3. Punktes in meinem Fall geben. Ich habe 1 und 2 versucht und beides funktioniert nicht. – Kashiii

+0

Ihr Problem wurde gelöst, aber da Sie nach dem 3. Punkt gefragt haben, sollten Sie sich diesen Link anschauen http://stackoverflow.com/questions/4608340/how-to-forward-the-request-to-another-jsp- page-on-click-von-einem-link-in-a-jsp-pag – BeginnersSake

Verwandte Themen