¿Cómo puedo redireccionar a otra página usando Wicket? IIRC, alguna excepción tiene que ser lanzada en el constructor, pero no recuerdo cuál. Gracias por adelantado.Wicket: ¿cómo redirigir a otra página?
Respuesta
Lanzar un RestartResponseAtInterceptPageException
lo hará, como se anotó en su propia respuesta, pero eso es realmente parte de un sistema que permite una redirección con una prolongación eventual en la página actual (con frecuencia parte de un proceso de autorización). Si esa no es su situación, pero aún tiene que hacer algo que interrumpa el procesamiento, podría ser mejor lanzar un RestartResponseException
.
El uso del principal que conozco para RestartResponseAtInterceptPageException
se encuentra en el proceso de "redirigir a la página de inicio de sesión". Si está utilizando la autenticación basada en roles, una implementación de IAuthorizationStrategy
al determinar que no ha iniciado sesión indicará un IUnauthorizedComponentInstantiationListener
configurado, generalmente el AuthenticatedWebApplication
que arroja esta excepción si no ha iniciado sesión, con un redireccionamiento a una configuración página de inicio de sesión. (Si ha iniciado sesión pero no está autorizado, sucede algo más ...).
El redireccionamiento real lo realiza el PageMap
, que también en este caso recuerda la página a la que intentaba acceder. Después de un inicio de sesión exitoso, la página de inicio de sesión puede solicitarle que lo envíe a la página que estaba tratando originalmente llamando al continueToOriginalDestination()
, que es un método en Component
y recupera la página recordada del PageMap
.
Hay algunos buenos example code para este proceso de autenticación, pero la excepción y el interceptar se esconden detrás de las escenas de alguna manera.
Una búsqueda rápida para todos *Exception.java
archivos en wicket lo reveló. Uno tiene que lanzar una RestartResponseAtInterceptPageException
:
public MyPage() {
...
if (redirect) {
throw new RestartResponseAtInterceptPageException(targetPage);
}
...
}
redirección a una página portillo, utilizando un cliente de redireccionamiento (HTTP 302, los cambios de tu navegador URL):
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new RestartResponseException(
TargetWicketPage.class,
new PageParameters().set("param1", "value1"));
redirigir a una página portillo, utilizando una redirección de servidor/delante (URL del navegador se mantiene sin cambios):
Desde Wicket 1.5RC5.1:
import org.apache.wicket.RestartResponseException;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new RestartResponseException(
new PageProvider(
TargetWicketPage.class,
new PageParameters().set("param1", "value1")),
RedirectPolicy.NEVER_REDIRECT));
Antes Wicket 1.5RC5.1:
import org.apache.wicket.request.RequestHandlerStack.ReplaceHandlerException;
import org.apache.wicket.request.handler.PageProvider;
import org.apache.wicket.request.handler.RenderPageRequestHandler;
import org.apache.wicket.request.handler.RenderPageRequestHandler.RedirectPolicy;
import org.apache.wicket.request.mapper.parameter.PageParameters;
...
throw new ReplaceHandlerException(
new RenderPageRequestHandler(
new PageProvider(
TargetWicketPage.class,
new PageParameters().set("param1", "value1")),
RedirectPolicy.NEVER_REDIRECT),
true);
redirección a una dirección URL, a través de HTTP 302 ("Movido temporalmente"):
import org.apache.wicket.request.flow.RedirectToUrlException;
...
throw new RedirectToUrlException("http://targetURL");
redirección a una dirección URL, a través de HTTP 301 ("Movido permanentemente", SEO):
import org.apache.wicket.request.flow.RedirectToUrlException;
import javax.servlet.http.HttpServletResponse;
...
throw new RedirectToUrlException("http://targetURL",
HttpServletResponse.SC_MOVED_PERMANENTLY);
me acaba de encontrar
getRequestCycle().setResponsePage(MyOtherPage.class);
que está trabajando por lo menos en portillo 6. se trabaja del lado del servidor y vuelve a escribir la URL también. Tal vez es un poco más rápido que usar una excepción.
- 1. Redirigir a la página externa no Wicket en Wicket 1.5
- 2. Cómo redirigir a otra página usando PHP
- 3. ¿Cómo redirigir a otra página después de 5 minutos?
- 4. Redirigir una página a otra página durante 5 segundos y luego redirigir de nuevo
- 5. redirigir a otra página si javascript está deshabilitado
- 6. jQuery Mobile: redirigir a otra página antes de cargar
- 7. javascript: ¿redirigir a una página?
- 8. Página de Visualforce incrustada en una página de detalles que debe redirigir a otra página
- 9. ¿Cómo puedo redireccionar una página php a otra página php?
- 10. backbone ir a otra página
- 11. cómo detener la página redirigir
- 12. ASP.NET MVC 3: redirigir a otra acción
- 13. ¿Cómo redirigir index.php a otra página correctamente a través de .htaccess?
- 14. cómo redirigir a la página de inicio
- 15. redirigir una página automáticamente
- 16. Redirigir automáticamente a una página
- 17. ASP.net redirigir a la página de llamada
- 18. ¿Cómo puedo redirigir al cliente de una página CGI a otra usando Perl?
- 19. Cómo redirigir a otra página con el elemento de autocompletado de jQuery, haga clic en
- 20. Bash Terminal Redirigir a otra terminal
- 21. ¿Cuál es la mejor manera de redirigir automáticamente a alguien a otra página web?
- 22. ¿Cómo redirigir a una página de administración diferente en Wordpress?
- 23. Página web redirigir a la página principal con CGI Python
- 24. redirigir a la página actual en ASP.Net
- 25. Cómo "reenviar" una cookie a otra página
- 26. redirigir a misma página para anclar
- 27. Cómo redirigir a la misma página en PHP
- 28. cómo redirigir a otra acción en el mismo controlador?
- 29. Cómo redirigir de una actividad a otra actividad
- 30. Cómo redirigir un sitio a otra ubicación en IIS7
Lo siento, no entiendo lo que quiere decir con "eventual continuación en la página actual". ¿Podrías por favor elaborar un poco? Gracias por adelantado. – Mot
@mklhmnn: He agregado algunas notas sobre un uso común y un poco sobre cómo funciona.Es intrincado, así que no estoy seguro de cuánto ayuda esto. –
Gracias por la explicación detallada. – Mot