防止在春季webflow中提交多个

时间:2013-03-05 13:33:39

标签: spring spring-webflow-2

我们正在使用webflow,因为我们在提交之前需要填写多个表单。在最终页面上,当用户提交所有数据库事务时。所以我希望用户阻止多次提交。有没有一种方法可以让webflow本身优雅地处理这个问题。优雅地,我的意思是它应该重定向或保持用户在同一页面上应该内部阻止任何多次提交操作。请注意我们无法使用javascript。

2 个答案:

答案 0 :(得分:0)

如果有一些内置机制来处理这种模式,那就太好了。与此同时,我们在“action”类中执行此操作,其中包含synchronized块,mutex和一些流范围对象或属性。例如:

Object mutex = WebUtils.getSessionMutex(
        ((HttpServletRequest) context.getExternalContext().getNativeRequest()).getSession());

synchronized (mutex) {

    if (!model.isComplete()) {
        // complete transaction
        model.setComplete(true);
    }
 }

 // return correct transition

答案 1 :(得分:0)

您可以使用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>