0

我的纯 HTML 中有许多提交按钮。一个不起作用如下:- 另一个与下面相同

<form:submit cssClass="action-button" name="excelBTNX" value="Excel" id="excelBTNX" />

控制器中上述按钮的功能是创建一个excel表并放入会话(我可以从cookies下载)并返回。

Controller中对应方法的定义与其他正常工作的按钮相同。

问题是,它仅在偶数命中时有效。当我第一次单击页面时,页面会被刷新。当我第二次单击时,控制权传递给控制器​​,我的 excel 以 cookie 的形式出现。

我尝试使用 javaScript 代码跟踪提交是否有效

     $('form').submit(function(){
     alert("事件被触发");
});

并为这两种情况发出警报。

我已经从控制器(手动)完成了验证部分,因此不使用本地内置验证器。所以我相信他们不是这样的。

我如何解决它 ?

控制器代码:-

 @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";}

4

1 回答 1

0

以下是一些步骤:

  • 检查此问题是否与您的 Excel 处理有关,或者是否与您的控制器有关。我假设你有类似的东西
@RequestMapping(..., params = "excelBTNX")
public ModelAndView next(...) 
{ <EXCEL FUNCTIONALITY> }

只需注释掉 Controller 中的 并验证每次都调用该方法。请对此进行测试,让我们知道这是否有效

  • 发生了什么让您认为 Controller 仅在第二次单击时被调用?也许您正在查看的迹象并不意味着控制器仅在每秒钟点击一次时被调用。请解释

  • 修复if (1=1)代码。=在Java中是赋值运算符,==是比较运算符。我假设你想做一个比较。您似乎还简化了这部分代码,但实际上可能是问题所在。请在此处发布实际代码

  • 我在这里没有看到任何关于 cookie 的信息。在我看来,您正在创建一个临时 Excel 文件,并在会话中设置文件的名称。

session.setAttribute(fileDownload, filepath)无法工作,因为会话属性映射的键是字符串类型。应该是session.setAttribute("fileDownload", filepath)

  • 你能看到每次点击是否都会生成一个新的临时 Excel 文件吗?您应该能够通过时间戳来判断。

这可能仍然没有指出问题,但它肯定会让我们更接近。

于 2013-01-03T04:28:12.517 回答