PDA

Visualizza la versione completa : [JAVA/JSP] Problema valori in request HTTP


fraper
19-09-2005, 13:52
Salve, in una jsp ho una query ed in funzione dei risultati faccio stampare una tabella che li contiene, cos


.
.
.
out.println("<table width=\"40%\" border=\"1\">");
out.println("<tr>");
out.println("<td width=\"200\"><input type=\"radio\" name=\"materia\" value="+i+"_"+materie[i]+">"+materie[i]+"</td>");
out.println("<td width=\"48%\"><div align=\"center\">");
out.println("<select name=\"appello"+i+"\">");
while(r2.next()){
out.println("<option value="+r2.getString("DATA_ESAME")+">"+r2.getString("DATA_ESAME")+"</option>");
}
out.println("</select></td>");
out.println("</tr>");
out.println("</table>");


in questa tabella ho un modulo "radio" ed uno "select" che valorizzo con valori presi dalla query al database...mi capita che dopo il submit, quando vado a recuperare (in una servlet) i valori tramite un "request.getParameter("nome_variabile")"...non mi viene restituito il valore "completo"...ad esempio se il valore del menu a tendina che seleziono "21 Gennaio 2005"...la request HTTP mi restituisce solo "21"...oppure se il valore "Ciao come stai"...mi viene restituito solo "Ciao"...in pratica c' qualche problema con gli spazi....come lo risolvo? un problema del FORM? Aiuto!

anx721
19-09-2005, 14:35
Mi pare che quando hai una stringa con degli spazi, ad esempio "Ciao a tutti" , allora allo stesso attributo sono associati tre valori "ciao", "a", e "tutti". se fai

request.getParameter("nome_variabile")

ottieni solo uno di questi valori.

prova a fare cosi per ricostruire la stringa:

String[] paramValues = request.getParameterValues("nome_variabile");
String s = "";
for(int i=0; i<paramValues.length; i++) {
s = s + paramValues[i]);
if( i < (paramValues.length - 1))
s = s + " ";
}

non so se c' un modo per far si che il browser invii direttamente la stringa intera e non la spezzi in piu valori

Shagrat
19-09-2005, 14:36
out.println("<option value=\""+r2.getString("DATA_ESAME")+"\">"+r2.getString("DATA_ESAME")+"</option>");


e


<input type=\"radio\" name=\"materia\" value=\""+i+"_"+materie[i]+"\">"+materie[i]+"

anx721
19-09-2005, 15:07
vero..ilproblema era quello...hai dimenticato di racchiudere tra le virgolette il valore dell'attributo

fraper
19-09-2005, 22:09
Funziona..grazie tante...vorrei capire per il meccanismo per il quale, mettendo gli apici, viene considerato il valore completo mentre senza no...

anx721
19-09-2005, 23:47
poich value un attributo (del tag option) il suo valore va incluso tra virgolette, senza virgolette dovrebbe essere sintatticamente errato, e il browser reagisce all'erre considerando come valore dell'attributo la prima stringa che incontra.

Shagrat
20-09-2005, 09:57
Non errato mettere valori nomi o altri attrubuti dei tag senza virgolette


<option value=pippo name=pluto id=id1>

corretto

non , invece, corretto dare valori con spazi a quegli attributi


<option value=pippo pluto name=che ne so>

per un qualsiasi interprete vuol dire:

attrubuto value = pippo
attributo pluto
attributo name = che
attributo ne
attributo so

se i valori non sono tra virgolette l'interprete non pu sapere a priori dove finisce il valore dell'attributo quindi prende lo spazio come terminatore

fraper
20-09-2005, 10:51
bene...ok grazie tante a tutti

Loading