我的普通HTML中有很多提交按钮。不工作的一个如下: - 另一个与下面相同
< form:submit cssClass="action-button" name="excelBTNX" value="Excel" id="excelBTNX" />
控制器中上面按钮的功能是创建一个excel表并放入会话(我可以从cookies下载)并返回。
控制器中相应方法的定义与其他工作正常的按钮相同。
这个问题是,它仅在偶数计数时起作用。当我第一次点击页面时会刷新。当我第二次点击时,控制器会传递给控制器,我的excel会显示为cookie。
我尝试使用javaScript代码跟踪提交是否正常
$(‘form’).submit(function(){ alert("event getting fired"); });
并为两种情况提供警报。
我已经从控制器(手动)完成了验证部分,因此不使用本地内置验证器。所以我认为情况并非如此。
我该如何解决?
控制器代码: -
@RequestMapping(value = "execute.action", method = RequestMethod.POST, params = "excelBTNX")
public String excelOut(HttpServletRequest request, HttpServletResponse response,
@ModelAttribute("mymodel") myModel model, BindingResult bindingResult, ModelMap modelmap) {
scr14(request).initializeSomeCalculation(model);// some innercalss called to manupulate model
HttpSession session = request.getSession(false);
if(1=1){//CRUD condition here true in READ mode.
model= new myModel ();
}
byte[] excel = createExcelS14(model,request);
String fileName = getExcelName() + ".xls";
String filepath = myFrameWorkUtils.createTempFile(excel, fileName);
if (session != null) {
session.setAttribute(fileDownload, filepath);
}
scr14(request).initializeSomeCalculation(model);
model.setDate(somedate);
return "myPanel";}
答案 0 :(得分:0)
以下是一些步骤:
@RequestMapping(..., params = "excelBTNX") public ModelAndView next(...) { <EXCEL FUNCTIONALITY> }
只需在Controller中注释掉,并验证每次都调用该方法。请测试一下告诉我们这是否有效。
会发生什么使您认为Controller只在第二次点击时被调用?也许您所看到的迹象并不意味着控制器仅在每次点击时被调用。 请解释。
修复if (1=1)
代码。 Java中的=
是赋值运算符,==
是比较运算符。我假设你想做一个比较。你似乎也简化了代码的这一部分,但它实际上可能是问题所在。 请在此处发布实际代码。
我在这里看不到任何关于cookies的信息。在我看来,您正在创建一个临时Excel文件,并在会话中设置文件的名称。
session.setAttribute(fileDownload, filepath)
无法工作,因为会话属性映射的键是String类型。应该是session.setAttribute("fileDownload", filepath)
。
这可能仍然没有指出问题,但它肯定会让我们更接近。