情景如下:
有一些观点状态。 当我的conversationScope中的对象处于某种状态(例如,不为空)时,我想阻止用户返回。 通过返回我的意思是:以太按下浏览器后退按钮或操纵执行参数。
“阻止”的一种方式是忽略请求。
我尝试实施FlowExecutionListenerAdapter
,但只能访问requestContext
,view
和viewState
所以问题是: 什么以及如何最好的方式来达到这个目的? 处理程序,监听器或拦截器。
答案 0 :(得分:1)
我写了一个FlowExecutionListenerAdapter
实现,如果标准匹配,会在Exception
阶段抛出resuming
。
@Override
public void resuming(RequestContext context)
{
if (!backwardNavigation)
{
if (!context.getFlowExecutionContext().getActiveSession().getState().getId()
.equals(attributeConfigurer.getFinishViewState()))
{
throw new ConfirmationFinishRedirectException();
}
}
}
并且我在抛出它的状态中捕获异常。
<transition on-exception="example.ConfirmationFinishRedirectException" to="finishState" bind="false" validate="false" history="discard"/>
我从这个网站得到了这个解决方案的想法:SpringForum - Thread: FlowExecutionListener - how to intercept and redirect user
答案 1 :(得分:0)
如何在过渡时设置history="discard"
呢?