Come da titolo c'è un modo per eseguire il comando request.GetParameter("") da un bean?
mi sembra di capire che non si può fare perchè il metodo non può essere richiamato al di fuori di un servlet container..però sarebbe utile in certi casi...
Come da titolo c'è un modo per eseguire il comando request.GetParameter("") da un bean?
mi sembra di capire che non si può fare perchè il metodo non può essere richiamato al di fuori di un servlet container..però sarebbe utile in certi casi...
il mio problema comunque è che quando uso il comando: p.setEta(request.getParameter("eta"));
Ottengo l'errore:
The method setEta(int) in the type persona is not applicable for the arguments (String)
Questo perchè nel bean età è un intero mentre io gli passo la stringa.
Se provo con:
if (request.getParameter("eta").length()!=0) {p.setEta(Integer.parseInt(request.getParameter("e ta")));}
e il campo eta prelevato dal form è nullo mi imposta eta=0!
se invece il campo età ha un valore impostato la query di aggiornamento funziona
Forse perché devi rivedere il metodo setEta. Tutto quanto trasmesso è, in linea generale, in formato String (oppure flusso di byte). In un'applicazione che prevede il campo età o qualsiasi altro campo di un form settato con un valore plausibile e consistente, vorrai reindirizzare l'utente alla pagina contenente il form ogniqualvolta vi siano delle incongruenze/inesattezze/inconsistenze nell'inserimento dei dati (magari raccogliendo e presentando tutti i problemi in una sola volta).
In definitiva il tuo metodo setEta dovrà essere qualcosa del genere:
codice:public void setEta(String etaS) { try { eta = Integer.parseInt(request.getParameter("eta")); if (eta <= 0) { //reindirizza al form oppure in una gestione più completa salva da qualche parte (Session) // l'informazione che una volta reindirizzati al form, il campo Età sarà da correggere } } catch (NumberFormatException e) { //reindirizza al form oppure in una gestione più completa salva da qualche parte (Session) // l'informazione che una volta reindirizzati al form, il campo Età sarà da correggere } }
<´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
"The answer to your question is: welcome to tomorrow"
grazie, ora vedo che posso fare. Io avevo risolto considerando eta come un stringa. Sembra funzionare tutto anche se non mi pare una soluzione ottimale...
Secondo te perchè ottengo 0 quando il campo età è vuoto?
forse c'entra qualcosa questo?
if (eta.length()!=0) query+="Eta="+eta+", ";//questa riga è nel file.jsp
//questo invece riguarda il metodo public boolean aggiornaPersona()
String etaa = Integer.toString(eta);//converte l'intero in stringa
if (etaa.length()!=0) query+="Eta="+eta+", ";
Il mio ragionamento è questo:
nella pagina.jsp, request.getParameter("eta") mi ritorna una stringa.
IL mio metodo setEta invece ha come parametro d'ingresso un int.
qiundi io con l'if verifico che la stringa eta non sia vuota. Se NON è vuota allora la trasformo in int e la mando alla funziona setEta. Il codice che fa cio è questo:
if (request.getParameter("eta").length()!=0) {p.setEta(Integer.parseInt(request.getParameter("e ta")));}
Ovviamente nel caso in cui eta è vuota il metodo setEta non entra in funzione.
Nel metodo public boolean aggiornaPersona() invece cè il seguente codice:
String etaa = Integer.toString(eta);//converte l'intero in stringa
if (etaa.length()!=0) query+="Eta="+eta+", ";
credo che il problema sia qui..Se eta è vuoto lui converte l'int vuoto in zero..
Relativamente agli attributi, non ne esistono di "vuoti": Java assegna loro un valore di default (0 per gli int, null per gli oggetti, e così via) e se tu non fai nulla per modificarlo, quello è e quello rimane. Non modificando mai "eta" (come avviene nel caso in cui il parametro della richiesta è vuoto) il suo valore rimane quindi a 0: se questa situazione non è accettabile per la tua applicazione devi essere tu a prevederlo, eventualmente generando delle eccezioni.
Una possibile sequenza di controlli può essere questa:
- parametro null
- parametro di lunghezza 0
- parametro non numerico
- parametro numerico ma con valore scorretto
- altri controlli
capito grazie![]()