Con la etiqueta "restrict" me parece que se produce una redirección una vez que se salva la condición?
Ejemplo de Seam util para investigar: blog, en este no se recoge la excepción en el pages.xml, unicamente la clase de excepción EntryNotFoundException tiene las etiquetas:
@ApplicationException(rollback=true)
@HttpError(errorCode=HttpServletResponse.SC_NOT_FOUND)
y entonces y con el web.xml:
<error-page>
<error-code>404</error-code>
<location>/seam/404.xhtml</location>
</error-page>
directamente busca el 404.xhtml
Las excepciones heredan de RuntimeException y se producen en la invocación de un metodo jsf, es decir metodo público que no devuelve nada.
ejemplo metodo jsf que lanza excepción:
public void buscar(){
....
thrown new RuntimeException("algo ha fallado");
....
}
ademas se pueden producir a través del pages.xml con la etiqueta "restrict" o con "action" dentro de "page"
<page view-id="/gestion/*">
<restrict>#{authenticator.admin}</restrict>
</page>
<exception class="es.miao.MiaoExcepcion">
<redirect view-id="/error.xhtml">
<message>ha funcionado la runtime exception</message>
</redirect>
</exception>
Se supone que al entrar en cualquier pagina que se corresponda con el patrón "/gestion/*" es decir todas aquellas que se encuentren en la carpeta gestion, serán restringidas a que el componente authenticator responda afirmativamente al metodo isAdmin().
De lo contrario la etiqueta restrict se encarga de llevar a la página de error correspondiente.
<exception class="org.jboss.seam.security.NotLoggedInException">
<redirect view-id="/login.xhtml">
<message>#{messages.masInfo}</message>
</redirect>
</exception>
Con "restrict" es el componente Identity el que se encarga de evaluar la expressión y lanzar la correspondiente excepción, también podríamos obtener una excepción de la etiqueta "action"
<action execute="#{catalogoAction.disminuye}" />
Se supone que las acciones jsf no devuelven nada como resultado return void. Sin embargo la etiqueta restrict espera un boolean [boolean isAdmin(), ó , boolean isChecked()]
martes, 26 de junio de 2007
Gestión de errores en Seam
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario