2009-09-28 17 views
5

Tengo una página JSP, que llama a una función y comprueba su valor de retorno. Si el valor de retorno no es nulo, la página JSP pasa a usarlo. Si el valor de retorno es NULL, quiero que el procesamiento de la página JSP para detener (esto se debe a que la función será realizar un redireccionamiento antes de devolver el objeto nulo. Asimismo, el resto del código JSP, obviamente, usa este objeto, y tendrá una excepción de puntero nulo si la función devuelve nulo).¿Cómo detener el procesamiento de un JSP temprano?

Así que mi pregunta es, ¿cuál es la manera correcta de detener la carga de una página JSP? ¿Puedo hacer algo como esto:

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

o si está utilizando un retorno en el medio de un JSP no la forma más limpia de hacer esto?

Gracias

Respuesta

6

Independientemente de cómo terminar el procesado de un JSP temprano, yo sugeriría que el manejo de control de flujo en un servlet antes de manipular la pantalla y cambiar a un JSP apropiada dependiendo del resultado de la llamada a la función.

que tienden a utilizar JSPs puramente para la visualización de los contenidos de un grano (o más de uno), y toda la lógica está contenido dentro del servlet invoca. Al hacer esto, obtiene una separación mucho más clara de las preocupaciones entre sus componentes, y un sistema más fácilmente comprensible y depurable.

+0

Esta sería probablemente la mejor cosa que hacer, pero no puedo cambiar la arquitectura actual del proyecto que estoy trabajando (no vale la pena tiempo en este momento). –

1

Si realmente quieres hacer esto Yo sugeriría algo como lo siguiente

 

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

<% 
} 
%> 

Estoy de acuerdo con Brian y aunque dicen que hay que evitar entrar en el JSP si es posible. Es posible que esto no esté disponible para usted si está gestionando una publicación/obtención que se dirige directamente a un archivo JSP dinámico en lugar de a un controlador/servlet.

2

respuesta de Brian es un buen consejo, pero no responde a la pregunta con claridad.

la respuesta es sí. Granel de JSP se convierte en un _jspService método, que se está ejecutando cuando JSP se "ejecutado", y puesto que es una función regular, que hace la limpieza en finalmente bloque, es seguro para volver.

2

Desde 2.0, no existe una forma estándar:

throw new javax.servlet.jsp.SkipPageException(); 
Cuestiones relacionadas