27. februar 2003 - 11:17Der er
12 kommentarer og 2 løsninger
request.getAttributes giver nullPointerException
Der er tre jsp sider, side0, side1 og side2 (man begynder jo altid at tælle fra 0 som programmør :D ). På side0 skriver folk noget i en form som via method="POST" bliver sendt videre til side1. I side1 bliver der sat en række parametre via request.setAttribute(), og der går en jsp:forward til side 2, der så side 2 benytter sig af en request.getAttribute() for at hente parametrene igen. Problem : nullPointerException i side2, den kan ikke finde de parametre jeg så nydeligt satte i side1. Nogen ideer til hvorfor det kan være?
Ups, undskyld, det er ikke en nullPointerException der kommer, det er java.lang.NumberFormatException: null, der kommer. Så attributten lader til at være tom på side2, hvilket jeg ved den ikke er i side1 når jeg sætter den. Hvis den var tom i side1, ville jeg jo få en fejl allerede når jeg benytter den derovre.
request.getSession.setAttribute sætter den vist som en sessionsvariabel og ikke som bare en requestvariabel, og som Arne_v også skrev i starten, så fjernes attributen nemlig når requestet er færdigt hvilket også var fordelen da jeg kun skal bruge objektet en enkelt gang. Problemet er bare, at objektet er tomt når det kommer frem. Det eksisterer jo, ellers ville der fremkomme en fejl hos brugerne når de så siden, men fejlen kommer kun i tomcats log.
Og sandt arne, havde glemt de gode glade dage med pascal og delphi hvor man bare talte som man havde lyst til. Det var ikke pænt men sjovt at lave et array fra 111-112, bare fordi man kunne :D
Hvis du ikke skal bruge den som Session variabel, er det overkill at sætte den som sådan en.
Default er vist "Page"-scope, som er den JSP-side du er på. Næste trin er "Request", som dækker alle de sider du kommer til i én forespørgsel, fx med forward. Det lyder som om det er den du skal bruge.
Syntaksen ... øh ... den har jeg ikke lige present.
Hmmmm, sidder lige og nærlæser koden lidt - hvad er HELT præcist forskellen på getParameter og getAttribute bortset fra at den ene returnerer et objekt og den anden returnerer en string? Min tanke lige nu er, at getParameter henter sine informationer fra URL'en efter et '?' som fx side.jsp?id=2, hvorimod getAttribute henter sine info fra et request objekt. Hvis jeg har ret i det, så løser det vist muligvis, måske hvis jeg er heldig, problemet.
Ah - fy da føj da. Hvis jeg nu bare havde kendt den forskel noget tidligere. Irriterende at den skide bog ikke kunne forklare det. Den er 950 sider lang, og så springer den over en SÅ væsentlig forskel på de to metoder.
Kanon - der klarede jeg to problemer på samme tid. Videre til næste spændende dilemma. :D
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.