我在liferay portlet上显示我的自定义对象列表。 现在我的问题是我想为用户提供导出功能。 将显示以下列表中的导出链接。 当用户点击该按钮时,它会将显示的列表下载为excel文件。
我在生成显示列表的同时生成excel文件。所以,现在我的问题是导出链接应该如何表现。
我的导出按钮代码。
<portlet:actionURL name="exportURL" var="exportURL"></portlet:actionURL>
<p><a href="<%=exportURL %>">← Export</a></p>
我想的一种方法是生成excel文件之后我可以将它上传到Liferay的文档库中,然后提供下载链接作为portlet上的导出链接它是一个很好的approch?
答案 0 :(得分:2)
您想使用<portlet:actionURL>
,而不是<portlet:resourceURL>
。这会触发portlet的资源阶段,您可以在其中提供除HTML片段之外的其他内容类型,例如: Excel类型。
我的印象是你已经指定了excel导出本身,只需要知道如何从portlet UI导出,对吧?在serveResource
中,您会获得ResourceRequest
和ResourceResponse
个对象,并可以为响应设置Mimetype(及其OutputStream
)
答案 1 :(得分:1)
您应该仅在用户点击要导出的链接后生成文件,因为adarshr已在您的问题的评论中写入。如果您生成文件并在每次列表显示在portlet中时将其上传到下载中心,那将无用地浪费服务器资源。
答案 2 :(得分:0)
您可以使用poi-2.5.1.jar在java中生成excel文件。
使用serveResource方法。
在代码段下方,您可以使用。\
Workbook workBook = new HSSFWorkbook();
Sheet sheet = workBook.createSheet("new sheet");
Row row = sheet.createRow((short)0);
Cell cell = row.createCell(0);
//set row,cell value as per your custom entity
resourceResponse.setContentType("application/vnd.ms-excel");
OutputStream out = resourceResponse.getPortletOutputStream();
workBook.write(out);
HTH, 此致