В какое состояние вы добавили атрибут history
?
Во-первых, <action-state>
не поддерживает его (https://jira.spring.io/browse/SWF-1481).
Вы должны добавить его к первому переходу <view-state>
, Что, если бы вы хотели сделать это условно только на том, что произошло в <action-state>
, было бы недостаточно. Мы закончили тем, что создали Java код для вызова из нашего <action-state>
метода, чтобы сделать это.
/**
* 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());
}
}
(Также обратите внимание, что «invalidate» делает недействительным состояние и все перед ним. Если вы хотите только чтобы предотвратить это единственное состояние, вместо этого вы бы использовали "сбросить". https://docs.spring.io/spring-webflow/docs/current/reference/html/views.html#view -backtracking )