0

我正在做一个小项目,我有一个jsp,它有一个带有动作的表单。当我单击该按钮时,它会成功调用动作映射方法。在那个方法中,我调用了一个数据库,它在大约 30k 记录上选择插入数据库。问题是在运行 db 代码 10-20 秒后,再次调用动作映射方法。我不知道它的原因。

我想要实现的是,Actionmapping 方法应该只调用一次,因为如果它调用两次就会违反完整性约束。我不知道 liferay 行为不同的原因。

我还想知道是否可以将 db 代码与 actionmapping 方法分开,以便在单击按钮时调用该方法,然后通过给出“正在进行中”的消息返回给 jsp。谁能给我一些关于这个的想法。谢谢!!!!

我正在使用带有 spring mvc 框架的 liferay 7 GA2

jsp文件代码:

<portlet:actionURL var="InvokeFileURL">
<portlet:param name="action" value="callaction"/>
</portlet:actionURL>

    <aui:form action="<%= InvokeFileURL %>" method="post">
    <div><b>Files Selected For Invoke</b></div>
    <div style="width:1180px;height:670px;border:1px solid #000; margin-left:30px;max-height: 700px; overflow:auto;" id="invokefiles" > 
    </div>
    <br/>
    <p style= "text-align:right;margin-right:10px" ><aui:button name="Invoke" value="Invoke" type="submit" /></p>
    </aui:form>

控制器代码

@ActionMapping(params = "action=callaction" )
        public void invokerequest(ActionRequest request, ActionResponse response)
                throws Exception {
            _log.info("Invoke called"); //Called Twice
             DBParserJDBC.DBParser(); //called twice
             //Function to call DB ( its a long process)
            response.setRenderParameter("action", "success");

        }

        @RenderMapping(params = "action=success")
        public String viewSuccess() {

            _log.info("#############Calling viewSuccess###########");

            return "view";

        }
4

0 回答 0