Estoy usando la primavera Webflow y estoy a redirigir a partir de un view-state
a action-state
a view-state
. Ahora, cuando el usuario está en el segundo view-state
, no quiero que el usuario sea capaz de hacer clic en el botón Atrás del navegador y vaya a la página anterior.
He descubierto que, history="invalidate"
puede ser utilizado para invalidar la instantánea de la página anterior. He intentado utilizar en el transition
. Sin embargo, no su trabajo (el botón atrás del navegador no está desactivado).
Entonces, ¿qué puedo añadir a mis estados Webflow con el fin de desactivar el botón de retroceso y sólo permite que el usuario utilice los controles de navegación que se encuentran dentro de la página?
Gracias
A lo que el estado ¿ha agregado el history
atributo?
En primer lugar, <action-state>
no lo soporta ( https://jira.spring.io/browse/SWF-1481 ).
Habría que añadir que a la primera <view-state>
transición 's. Lo cual, si sólo quería hacerlo de forma condicional en algo que sucedió en el <action-state>
, no sería suficiente. Terminamos la creación de código Java para llamar desde nuestro <action-state>
método para hacer esto.
/**
* Invalidate WebFlow history. For use in action-state, where the transition element is not able
* to specify to invalidate history.
*/
public static void invalidateHistory() {
RequestContext context = RequestContextHolder.getRequestContext();
synchronized(context.getFlowExecutionContext()) {
DefaultFlowExecutionRepository r =
(DefaultFlowExecutionRepository)
((FlowExecutorImpl)
context.getActiveFlow().
getApplicationContext().
getBean(FlowExecutor.class)).getExecutionRepository();
r.removeAllFlowExecutionSnapshots((FlowExecution)context.getFlowExecutionContext());
}
}
(También, nota que "invalida" invalida el estado y todo a su paso. Si sólo desea evitar que solo estado, que haría uso de "descarte" en su lugar. Https://docs.spring.io/spring-webflow/docs /current/reference/html/views.html#view-backtracking )