如何将CSV从java转换为HTML表
我试图以HTML格式显示CSV文件,我决定使用CSVToTable jquery,但如果有更简单的方法,请告诉我 我读到我不能只要求用户选择他们的文件然后呈现它,我必须首先将文件加载到服务器,所以我添加了一个jsp页面来获取文件,并编写了一个Struts操作类来获取文件 loadFile.jsp:如何将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">
<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>