java - 还有另一种方法可以在 jquery 或表单提交中下载文件吗?

标签 java jquery jsp parameters struts2

我想通过window.open(url)方法下载文件,但是参数太多,action无法接收它们。是否有一些解决方案可以在 jQuery 中或通过表单提交来解决这个问题?

var url = "${path}/MaterialStockedAnalysisExport.action?type=byCompany";
url += "&startMonth=" + startMonth + "&endMonth=" + endMonth + "&materialStr=" +
    escape(encodeURIComponent(materialStr))  + "&companyStr=" + 
    escape(encodeURIComponent(companyStr));
alert(url);
window.open(url);

最佳答案

操作的参数可以通过两种方式传递,在 servlet 技术中是 http GET 或 POST 请求。但由于导航栏的某些服务器或浏览器限制,您无法在一个请求中传递所有这些内容。问题的解决方案是使表单隐藏输入字段,然后提交表单。

<s:set var="myPath">${path}</s:set>  
<s:url var="myUrl" namespace="%{#myPath}" action="MaterialStockedAnalysisExport" />
<s:form id="myForm" action="%{myUrl}" method="POST">
  <s:hidden name="type"/>
  <s:hidden name="startMonth"/>
  <s:hidden name="endMonth"/>
  <s:hidden name="materialStr"/>
  <s:hidden name="companyStr"/>
  <s:a id="myLink" href="#">Export</s:a>
  <script type="text/javascript">
    $(document).ready(function() {
      $("#myLink").click(function(event) {
        event.preventDefault();
        $('input[name=type]').val('byCompany');
        $('input[name=startMonth]').val(startMonth);
        $('input[name=startMonth]').val(endMonth );
        $('input[name=materialStr]').val(ematerialStr);
        $('input[name=companyStr]').val(companyStr);
        $("#myForm").submit();
      });
    });
  </script>
</s:form>

关于java - 还有另一种方法可以在 jquery 或表单提交中下载文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18506969/

相关文章:

java - 使用 iText7 将对齐的文本环绕表格

jquery函数: is a radio checked/same id

java - 从 maven-antrun-plugin 调用 ant 脚本时出现 IllegalAccessError

Java递归函数,值的单一初始化

java - 在哪里可以找到适用于 windows x86/32 位的 java 的 jdk 13 的最新版本

java - 无法模拟 java 8 的可选类

javascript - 是什么导致 empty() 和 append() 不起作用?

javascript - 很多 Jquery 和 check/radio/select 样式元素——无样式内容的 Flash

java - ByteBuffer分配直接示例

jsp - 在 Spring Web 应用程序中显示日期字段的策略