Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将CSV从java转换为HTML表_Java_Javascript_Jquery_Jakarta Ee_Struts - Fatal编程技术网

如何将CSV从java转换为HTML表

如何将CSV从java转换为HTML表,java,javascript,jquery,jakarta-ee,struts,Java,Javascript,Jquery,Jakarta Ee,Struts,我试图以HTML格式显示CSV文件,我决定使用CSVToTable jquery,但如果有更简单的方法,请告诉我 我读到我不能只要求用户选择他们的文件然后呈现它,我必须首先将文件加载到服务器,所以我添加了一个jsp页面来获取文件,并编写了一个Struts操作类来获取文件 loadFile.jsp: <form name="myForm" method="POST" action="/importAction.do" enctype="multipart/form-data">

我试图以HTML格式显示CSV文件,我决定使用CSVToTable jquery,但如果有更简单的方法,请告诉我

我读到我不能只要求用户选择他们的文件然后呈现它,我必须首先将文件加载到服务器,所以我添加了一个jsp页面来获取文件,并编写了一个Struts操作类来获取文件

loadFile.jsp:

<form name="myForm" method="POST" action="/importAction.do" enctype="multipart/form-data">
   <input id='fileId' type='file' name='attachmentFile' value='' maxlength='255'/>
   <input type="submit" value="Submit"/>
</form>
我还有一个包含以下内容的目标JSP:

renderCSV.jsp:

<div id="CSVTable"></div>

<script> 
    $(function() {
        $('#CSVTable').CSVToTable('test.csv'); 
    });
</script>

$(函数(){
$('#CSVTable').CSVToTable('test.csv');
});
因此,上述代码中的两个问题是:

1) 如何从java类中的JSP检索该文件,以将其传递给将呈现该文件的JSP

2) 在renderCSV.jsp中,如何将在action类中获得的文件传递到CSVToTable?现在我把“test.csv”作为占位符

我也愿意接受其他建议。
提前感谢您的帮助。

这是获取CSV文件并输出到响应的示例操作
getCSV

public ActionForward execute (ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {
  File file = new File("C:\\temp\\test.csv");
  FileInputStream fis = new FileInputStream(file);
  OutputStream out = response.getOutputStream();

  byte[] buffer = new byte[4096];
  //copy binary data to response out
  while(fis.read(buffer, 0, buffer.length) != -1)
    out.write(buffer, 0, buffer.length);
  out.flush();
  fis.close();
  return null;
}
因此,您可以在代码中使用它

<div id="CSVTable"></div>

<script> 
    $(function() {
        $('#CSVTable').CSVToTable('getCSV.do'); 
    });
</script>

$(函数(){
$('#CSVTable').CSVToTable('getCSV.do');
});

要上传CSV文件,请阅读示例

只需创建一个以CSV格式返回数据的操作,然后在适当的地方将其提供给javascript。今天的大多数ppl都使用JSON格式来实现这些目的。是的,没错,但我该怎么做呢?jsp中“test.csv”的替换看起来如何?我如何在操作中检索附件并将其作为CSV传递?感谢Roman,但是这并不能完全起作用。上传的文件我在我的第一篇文章中就有了,我可以用这个文件进入action类,在这一点上我很好。所以我尝试了你的action类,但它所做的只是在刷新页面的一行中刷新CSV。由于返回null,renderCSV.jsp永远不会被调用,因此jquery和该页面中的所有内容永远不会被调用,因此我需要将其传递给CSVToTable。也许我误解了?您是否使用CSVToTable jquery调用action类?getCSV.do如何在需要提交按钮时调用action类?CSVToTable使用ajax从上面的操作中获取数据,然后解析它并绘制一个表。但是ajax不能仅仅触发struts这样的操作,所以我不理解这段代码是如何工作的。现在我有:1)loadfile.jsp提交文件,这将调用action类。2) Action类调用renderCSV.jsp并将文件传递给它3)renderCSV.jsp运行jquery并在表中呈现csv。但是从您的代码来看,renderCSV.jsp似乎是第一个?那动作课呢?动作类是如何触发的?文件上传到哪里?在与呈现csv相同的jsp中?那么它们是如何连接的呢?你说过ajax不能像那样触发struts操作,ajax如何触发struts操作?2) 如果没有动作配置,则不清楚它是如何呈现的以及您是如何传递文件的3)我知道CVSToTable通过ajax加载数据,并且您应该提供加载数据的url,因此,如果您可以在JSP中访问该文件,则在您修改插件以使用入站javascript数组之前,该文件是无用的。3) 加载CSV数据的操作是另一个操作,当从浏览器加载页面时,插件会调用该操作。。。。。。它转到服务器并在响应中返回数据的上面执行操作。该数据由插件处理,并修改DOM以插入表。
<div id="CSVTable"></div>

<script> 
    $(function() {
        $('#CSVTable').CSVToTable('getCSV.do'); 
    });
</script>