我正在开发一个小项目,我有一个jsp,其中有一个表单上有动作。当我单击该按钮时,它会成功调用动作映射方法。在那个方法中,我调用一个db,它在一些30k记录上选择在DB上插入。问题是在运行db代码大约10-20秒后,再次调用动作映射方法。我不知道它的原因。
我想要实现的是,Actionmapping方法应该只调用一次,因为如果调用两次则违反完整性约束。我不知道liferay表现不同的原因。
我还想知道是否可以将db代码与actionmapping方法分开,以便在单击按钮时调用该方法,然后通过给出消息将其返回到jsp" In Progress&# 34 ;. 谁能为我提供一些关于此的想法。感谢!!!!
我正在使用带有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";
}