SSH项目PDF下载报错:HTTP Status 500 - Method "exportPDF" failed for object cn.itcast.bos.web.action.AreaAct

在尝试使用SSH框架导出PDF文件时,遇到HTTP 500错误,问题源于方法'exportPDF'在对象cn.itcast.bos.web.action.AreaAction执行时失败,具体错误为'java.lang.NoClassDefFoundError: com/lowagie/text/SplitCharacter'。错误堆栈跟踪涉及多个拦截器和Struts2、OGNL相关组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码部分:
@Resource
private DataSource dataSource;

@Action(value="areaAction_exportPDF")
public String exportPDF()throws Exception{
    // 1.查询所有区域数据
    List<Area> list = areaService.findAll();
    // 2.设置相应参数:文件名和一个流两个头
    String filename = "区域数据报表.pdf";
    //获取到浏览器类型,
    String agent = ServletActionContext.getRequest().getHeader("User-Agent");
    String mimeType = ServletActionContext.getServletContext().getMimeType(filename);
    //根据浏览器类型转换中文字符
    filename = FileUtils.encodeDownloadFilename(filename, agent);

    ServletOutputStream os = ServletActionContext.getResponse().getOutputStream();
    ServletActionContext.getResponse().setContentType(mimeType);
    ServletActionContext.getResponse().setHeader("content-disposition", "attachment;filename=" + filename);
    // 读取 jrxml 文件
    String jrxml = ServletActionContext.getServletContext().getRealPath("/WEB-INF/templates/area.jrxml");
    // 准备需要数据
    Map<String, Object> parameters = new HashMap<String, Object>();
    parameters.put(null, null);
    // 准备需要数据
    JasperReport report = JasperCompileManager.compileReport(jrxml);
    JasperPrint jasperPrint = JasperFillManager.fillReport(report, parameters, dataSource.getConnection());

    // 使用JRPdfExproter导出器导出pdf
    JRPdfExporter exporter = new JRPdfExporter();
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, os);
    exporter.exportReport();// 导出
    os.close();// 关闭流
    return NONE;
}

报错部分:
HTTP Status 500 - Method “exportPDF” failed for object cn.itcast.bos.web.action.AreaAction@10d54f5

type Exception report

message Method “exportPDF” failed for object cn.itcast.bos.web.action.AreaAction@10d54f5

description The server encountered an internal error that prevented it from fulfilling this request.

exception

ognl.MethodFailedException: Method “exportPDF” failed for object cn.itcast.bos.web.action.AreaAction@10d54f5 [java.lang.NoClassDefFoundError: com/lowagie/text/SplitCharacter]
ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1305)
ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:117)
com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:108)
ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369)
ognl.ASTMethod.getValueBody(ASTMethod.java:90)
ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
ognl.SimpleNode.getValue(SimpleNode.java:258)
ognl.Ognl.getValue(Ognl.java:494)
ognl.Ognl.getValue(Ognl.java:458)
com.opensymphony.xwork2.ognl.OgnlUtil 2.execute(OgnlUtil.java:309)com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:340)com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:307)com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:423)com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:287)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:250)org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:256)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:167)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:265)org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:76)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:229)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)org.apache.struts2.interceptor.DateTextFieldInterceptor.intercept(DateTextFieldInterceptor.java:125)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:253)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171)com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98)com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:244)com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:139)co

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值