Здравствуйте. Проблема в JasperReports в WEB приложении : не отображаются в отчете значения полей типа java.lang.String, значения других типов отображаются без проблем, например java.lang.Integer. В чем может быть проблема?
package controller;
import enterprise.PersonFacadeLocal;
import entity.Person;
import java.awt.event.ActionEvent;
import java.io.File;
import java.io.IOException;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
@Named(value = "personController")
@SessionScoped
public class personController implements Serializable {
private Person person;
private List<Person> persons = null;
@Inject
private PersonFacadeLocal personFacadeLocal;
private JasperPrint jasperPrint;
public personController() {
}
public String personAll() {
persons = personFacadeLocal.findAll();
return "personAll";
}
public String personAdd() {
person = new Person();
return "personAdd";
}
public String personEdit(Integer id) {
person = personFacadeLocal.find(id);
return "personAdd";
}
public String personSave() {
if (person.getId() == null) {
personFacadeLocal.create(person);
} else {
personFacadeLocal.edit(person);
}
person = null;
return personAll();
}
public void personDelete(Integer id) {
person = personFacadeLocal.find(id);
persons.remove(person);
personFacadeLocal.remove(person);
persons = personFacadeLocal.findAll();
}
public void reportBuilder() throws JRException {
persons = personFacadeLocal.findAll();
JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(persons, false);
String report = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/persons.jasper");
File file = new File(report);
jasperPrint = JasperFillManager.fillReport(file.getPath(), null, beanCollectionDataSource);
}
public void ViewPdf(ActionEvent actionEvent) throws JRException, IOException {
reportBuilder();
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
ServletOutputStream servletStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletStream);
FacesContext.getCurrentInstance().responseComplete();
}
public void exportToPdf(ActionEvent actionEvent) throws JRException, IOException {
reportBuilder();
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "attachment; filename=Persons.pdf");
ServletOutputStream servletStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletStream);
FacesContext.getCurrentInstance().responseComplete();
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
this.persons = persons;
}
}
Фрилансер или Digital-агентство - Как сделать правильный выбор?
Очень нужна помощьВ Java не долго, так что костылей полно, прошу сильно не пинать)
Приводится на хабре в статье библиотека Apache Commons Logging (не знаю смысл этой библиотеки, не юзал) и комментарий: