在SpringWebFlow中防止多次提交
我们正在使用webflow,因为我们在提交之前需要填写多个表单。在用户提交所有数据库事务的最后一页上。所以我想让用户避免多次提交。webflow本身是否有办法处理这个问题。优雅地说,我的意思是它应该重定向或保持用户在同一页面上,这应该可以防止多次提交的任何操作。请注意,我们不能使用javascript。如果有一些内置机制来处理此模式,那就太好了。同时,我们在“action”类中使用在SpringWebFlow中防止多次提交,spring,spring-webflow-2,Spring,Spring Webflow 2,我们正在使用webflow,因为我们在提交之前需要填写多个表单。在用户提交所有数据库事务的最后一页上。所以我想让用户避免多次提交。webflow本身是否有办法处理这个问题。优雅地说,我的意思是它应该重定向或保持用户在同一页面上,这应该可以防止多次提交的任何操作。请注意,我们不能使用javascript。如果有一些内置机制来处理此模式,那就太好了。同时,我们在“action”类中使用synchronized块、a和一些流范围对象或属性来实现这一点。例如: Object mutex = WebUti
synchronized
块、a和一些流范围对象或属性来实现这一点。例如:
Object mutex = WebUtils.getSessionMutex(
((HttpServletRequest) context.getExternalContext().getNativeRequest()).getSession());
synchronized (mutex) {
if (!model.isComplete()) {
// complete transaction
model.setComplete(true);
}
}
// return correct transition
您可以使用javascript进行以下操作:
<html>
<head>
<script language="JavaScript" type="text/javascript">
var count = 0;
function submitFunction(eventId){
if(count == 0){
count++;
document.getElementById("yourForm")._eventId.value = eventId;
document.getElementById("yourForm").submit();
}else{
document.getElementById("requestMsg").style.display = 'block';
}
}
</script>
<head>
</head>
<body>
<form:form id="yourForm" commandName="yourForm" method="post">
<table>
<tr>
<td>
<div id="requestMsg">Request under process....</div>
</td>
</tr>
....
<tr>
<td>
<a href="javascript:submitFunction('submit');"><span>Submit</span></a>
</td>
</tr>
</table>
</form:form>
</body>
var计数=0;
函数submitFunction(eventId){
如果(计数=0){
计数++;
document.getElementById(“yourForm”)。\u eventId.value=eventId;
document.getElementById(“yourForm”).submit();
}否则{
document.getElementById(“requestMsg”).style.display='block';
}
}
正在处理中的请求。。。。
....
如何在webflow中获取模型?我从*-flow.xml调用的方法类似于updatexyy(RequestContext-RequestContext)。目前,我已经通过在需要防止提交的jsp上使用标记库在会话中创建令牌来防止多次提交。从会话中删除一个首次提交令牌并完成事务,对于其他后续提交令牌,在删除令牌时忽略。