Java cvc复杂类型。2.1:元素';财产';必须没有字符或元素信息项[子项],因为类型';的内容类型为空
我正在使用jasper report和spring mvc开发报告 当我点击查看按钮时,我得到一个空白页面,有以下错误Java cvc复杂类型。2.1:元素';财产';必须没有字符或元素信息项[子项],因为类型';的内容类型为空,java,jasper-reports,Java,Jasper Reports,我正在使用jasper report和spring mvc开发报告 当我点击查看按钮时,我得到一个空白页面,有以下错误 net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException; lineNumber: 59; columnNumber: 14; cvc-complex-type.2.1: Element 'property' must have no character or element informat
net.sf.jasperreports.engine.JRException: org.xml.sax.SAXParseException; lineNumber: 59; columnNumber: 14; cvc-complex-type.2.1: Element 'property' must have no character or element information item [children], because the type's content type is empty.
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:247)
at net.sf.jasperreports.engine.xml.JRXmlLoader.loadXML(JRXmlLoader.java:230)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:218)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:172)
at net.sf.jasperreports.engine.xml.JRXmlLoader.load(JRXmlLoader.java:156)
at net.sf.jasperreports.engine.JasperCompileManager.compile(JasperCompileManager.java:171)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:448)
at com.asd.cms.service.ReportService.getReport(ReportService.java:137)
at com.asd.cms.service.ReportService.generateReport(ReportService.java:58)
at com.asd.cms.controller.KGDLCReport.viewReport(KGDLCReport.java:70)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
`
我的KGDLCReport.java代码:
com.asd.cms.controller.KGDLCReport.viewReport(KGDLCReport.java:70)
@RequestMapping("/userWiseReportKGDLC")
public void viewReport(HttpServletRequest request, HttpServletResponse response) {
String dateFrom = request.getParameter("dateFrom");
String dateTo = request.getParameter("dateTo");
String outputFormat = request.getParameter("outputFormat");
Map<String,Object> param = new HashMap<String,Object>();
param.put("dateFrom", dateFrom);
param.put("dateTo", dateTo);
String path = request.getSession().getServletContext().getRealPath("/resources/jasper/KGDCL_Report1.jrxml");
**KGDLCReport.java:70** -> reportService.generateReport(path, outputFormat, param, response);
}
com.asd.cms.service.ReportService.getReport(ReportService.java:137)
公共JasperPrint getReport(字符串路径、映射参数)抛出SQLException{
JasperPrint print=新的JasperPrint();
JasperReport报告;
试一试{
System.out.println(“ReportService.java行135内的路径+路径”);
report=jaspecpompilemanager.compileReport(路径);//行:137
print=JasperFillManager.fillReport(报告、参数、jdbcTemplate.getDataSource().getConnection());
}捕获(JRE){
e、 printStackTrace();
}
返回打印;
}
哪一个可能是导致错误的原因?
提前谢谢。我做了一些研发后发现了问题。问题在报告页。Java代码还可以<代码>JRXmlLoader无法准确加载报表页面的xml。所以SAXParser无法解析xml。这就是我出错的原因
public void generateReport(String path, String outputFormat, Map<String, Object> param, HttpServletResponse res){
try{
if(new File(path).exists()){
JasperPrint jp = getReport(path, param); // Line: 58
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//String outputFormat = req.getParameter("outputFormat");
if(outputFormat.equals("pdf")){
JasperExportManager.exportReportToPdfStream(jp, baos);
.............
}
}
public JasperPrint getReport(String path, Map<String, Object> parameters) throws SQLException{
JasperPrint print = new JasperPrint();
JasperReport report;
try {
System.out.println("Path inside ReportService.java line 135"+path);
report = JasperCompileManager.compileReport(path); //Line: 137
print = JasperFillManager.fillReport(report, parameters, jdbcTemplate.getDataSource().getConnection());
} catch (JRException e) {
e.printStackTrace();
}
return print;
}