2009-09-28 14 views
5

Ho una pagina JSP, che chiama una funzione e controlla il suo valore di ritorno. Se il valore restituito non è nullo, la pagina JSP continua a utilizzarlo. Se il valore restituito è null, voglio che l'elaborazione della pagina JSP si interrompa (questo perché la funzione eseguirà un reindirizzamento prima di restituire l'oggetto null. Inoltre, il resto del codice JSP ovviamente usa questo oggetto, e otterrà un eccezione puntatore null se la funzione ha restituito null).Come interrompere l'elaborazione di un JSP in anticipo?

Quindi la mia domanda è, qual è il modo giusto di fermare il carico di una pagina JSP? Posso fare qualcosa di simile:

if (Func() == null) { return; } 

O sta usando un ritorno nel bel mezzo di una JSP non il modo più pulito per andare su questo?

Grazie

risposta

6

Indipendentemente dal modo di interrompere l'elaborazione di un JSP presto, suggerirebbero movimentazione controllo di flusso in un servlet prima manipolazione display, e passare a un JSP appropriata a seconda del risultato della chiamata di funzione.

Tendo ad usare JSP puramente per visualizzare il contenuto di un bean (o più di uno) e tutta la logica è contenuta all'interno del servlet invocante. In questo modo si ottiene una separazione molto più chiara delle preoccupazioni tra i componenti e un sistema più facilmente comprensibile e di debug.

+0

questo probabilmente sarebbe la cosa migliore da fare, ma non posso cambiare l'architettura attuale del progetto su cui sto lavorando (non vale la pena ora in questo momento). –

1

Se davvero si vuole veramente fare questo vorrei suggerire qualcosa come il seguente

 

..some jsp.. 
<% 
    if (iWantToKeepProcessing) { 
%> 
..someother stuff.. 

<% 
} 
%> 

Sono d'accordo con Brian e anche se dico che si dovrebbe evitare di entrare nella JSP, se possibile. Questo potrebbe non essere disponibile se gestisci un post/ottieni direttamente il targeting di un file JSP dinamico piuttosto che un controller/servlet.

2

La risposta di Brian è un buon consiglio, ma non risponde chiaramente alla domanda.

La risposta è SI. Bulk of JSP viene convertito in un metodo _jspService, che viene eseguito quando JSP è "eseguito", e dal momento che è una funzione regolare, che esegue la disinfezione nel blocco finally, è sicuro tornare.

2

Dal 2.0, esiste un modo standard:

throw new javax.servlet.jsp.SkipPageException(); 
Problemi correlati