使用JDK 1.6,JSF 2.1,PrimeFaces 2.2.1,POI 3.2,和Apache Tomcat 7導出到Excel JSF和PrimeFaces
我試圖建立一個servlet來允許基於該下載的Excel文件用戶選擇。 excel文檔是在運行時創建的。
沒有錯誤和代碼確實進入了servlet。
我點擊按鈕,沒有任何反應。我沒有使用PrimeFaces使用的數據表導出,因爲我需要對Excel文檔中的數據重新排序和自定義格式。
ExportExcelReports.java
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-Disposition", "attachment; filename=\"my.xls\"");
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
HSSFCell cell = row.createCell(0);
cell.setCellValue(0.0);
FileOutputStream out = new FileOutputStream("my.xls");
workbook.write(out);
out.close();
}
ProjectReportBean.java
public void getReportData() {
try {
FacesContext ctx = FacesContext.getCurrentInstance();
ExternalContext ectx = ctx.getExternalContext();
HttpServletRequest request = (HttpServletRequest) ectx.getRequest();
HttpServletResponse response = (HttpServletResponse) ectx.getResponse();
RequestDispatcher dispatcher = request.getRequestDispatcher("/ExportExcelReports");
dispatcher.forward(request, response);
ctx.responseComplete();
} catch (Exception e) {}
}
的index.xhtml
<h:form id="reportsForm">
<h:outputLabel for="report" value="Reports" /><br />
<h:selectOneMenu id="report" value="#{projectReportBean.selectedReport}" required="true" requiredMessage="Select Report">
<f:selectItem itemLabel="---" noSelectionOption="true" />
<f:selectItems value="#{projectReportBean.reports}" />
</h:selectOneMenu>
<p:commandButton action="#{projectReportBean.getReportData}" value="Export" update="revgrid" />
</h:form>
我不想使用servlet。我以爲我也是。在我得到這個工作後,挑釁地看着改變。 –
在這種情況下,請檢查答案更新以獲取重寫建議。 'ExternalContext'有很多委託方法。利用它們。 http://download.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html您最終想要在您的JSF代碼中導入** zero **'javax.servlet'導入。 – BalusC
剛剛得到它沒有servlet的工作。真的很感謝幫助。 –