0

送信する前に複数のフォームに入力する必要があるため、webflow を使用しています。ユーザーが送信した最終ページで、すべてのデータベース トランザクションが発生します。だから私はユーザーが複数の送信を防ぐことを望んでいます。Webflow自体がこれを適切に処理する方法はありますか. 優雅に私は、複数の送信に対するアクションを内部的に防止する必要がある同じページにユーザーをリダイレクトまたは保持する必要があることを意味します。JavaScript は使用できませんのでご注意ください。

4

2 に答える 2

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>

于 2014-04-28T17:35:13.060 に答える
0

このパターンを処理する組み込みのメカニズムがあればいいのですが。synchronized当面は、ブロック、ミューテックス、およびいくつかのフロー スコープ オブジェクトまたは属性を使用して、「アクション」クラスでこれを行います。例えば:

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

synchronized (mutex) {

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

 // return correct transition
于 2013-03-07T06:19:03.430 に答える