PDA

View Full Version : JSP e form di ricerca


deandrè
31-12-2005, 15:36
Ciao.
Ho realizzato una pagina jsp che ricerca dei dati in un database,
in particolare dei libri in base al titolo.

Quello che non riesco a gestire sono le eccezioni,
cioè se si digita un titolo non presente nel DB esce la pagina bianca.
Quello che vorrei fare io e che uscisse un messaggio del tipo "libro non presente".



Ho provato cosi ma non funziona.
%><b>Eccezione:<</b> <%= e.toString() %><%

} finally {
if ("+title+" != "null" ) {
out.println("<h2>titolo non presente</h2>");
}



title e il parametro di imput nel forum.

deandrè
31-12-2005, 16:01
Oh anche provato a fare un controlla quando "cattura la variabile" ma senza risultati

String title = request.getParameter("title");

if( request.getParameter(“title”) != null )
out.println("<h2>Inserire almeno una parola per effettuare una rcerca</h2>"); %>

Quello che succede e che il messaggio "inserire almeno una parola per effettuare una ricerca esce sempre

Napalm
31-12-2005, 16:42
Beh il metodo migliore IMHO è da fare dopo la query che esegui: sicuramente avrai un while(rs.next()){ stampo i libri che ho trovato}
qua all'interno puoi benissimo metterci un contatore che lo vai ad incrementare ogni volta che trovi un libro

while(rs.next()){ stampo i libri che ho trovato; i++}

alla fine del ciclo while ci metti un bella if

if( i == 0){Non ho trovato libri}
else{ continua a fare quello che devi fare}

mentre se usi
if(rs.next()) {stampo i libri che ho trovato }else{Non ho trovato libri}
anche se questo caso non dovresti usarlo perchè puoi anche avere + libri con la chiave di ricerca inserita.

NapalM

deandrè
31-12-2005, 17:39
cosi non mi è cambiato niente.
Se non trova niente mi da sempre pagina bianca

// Scorro e mostro i risultati.
while (resultset.next()) { int i=0; i++;
String Titolo = resultset.getString(1);
String Anno = resultset.getString(2);
String Autore = resultset.getString(3);
if (i==0) out.println("Non ci sta");
%>

pinok
31-12-2005, 20:32
Ovviamente la varibile int i=0 devi dichararla fuori dal while, altrimenti ad ogni giro te la riannulla.
Idem per il messaggio if (i==0), devi metterlo finito il while !

Napalm
01-01-2006, 14:23
Ovviamente la varibile int i=0 devi dichararla fuori dal while, altrimenti ad ogni giro te la riannulla.
Idem per il messaggio if (i==0), devi metterlo finito il while !

Concordo, anche perchè nel codice postato non vedo la graffa che chiude il ciclo while
// Scorro e mostro i risultati.
int i = 0;
while (resultset.next()) {
String Titolo = resultset.getString(1);
String Anno = resultset.getString(2);
String Autore = resultset.getString(3);
i++;
}
if (i==0) out.println("Non ci sta");
%>

NapalM

deandrè
03-01-2006, 11:38
Ho provato cosi ma non funziona:

// Scorro e mostro i risultati.

int i = 0;
while (resultset.next()) {
String Titolo = resultset.getString(1);
String Anno = resultset.getString(2);
String Autore = resultset.getString(3);
i++;
}

if (i==0) ; out.println("Non ci sta");
%>


%>


togliende } funziona ma naturalmente non fa nulla se no lasciare la pagina bianca.
Ma qual'è l'errore che genera?


org.apache.jasper.JasperException: Unable to compile class for JSP

An error occurred at line: 68 in the jsp file: /ingegneria/ricercalibro3.jsp
Generated servlet error:
Syntax error, insert "Finally" to complete TryStatement

Generated servlet error:
Syntax error on token "catch", Identifier expected

Napalm
03-01-2006, 12:46
Postami l'intero codice della pagina, hai sicuramente qualche graffa sparsa non aperta ed ecco perchè il mio codice non ti funziona.
Anche il ";" dopo l'if non ci và sennò ti stamperà sempre "Non ci sta" perchè non è nello statement dell'if.

NapalM

deandrè
04-01-2006, 15:17
Xnapalm.

Hai visto il messaggio nei messaggi privati?
Grazie