Jasper Отчеты на странице JSP - PullRequest
       18

Jasper Отчеты на странице JSP

2 голосов
/ 13 августа 2010

Как отобразить отчеты о яшме на странице JSP? Я использую инструмент iReport1.3.3 для создания
отчеты. Я изо всех сил пытаюсь отобразить отчет о яшме на странице JSP.

Можно ли передать ArrayList в отчеты о яшме?

Мне нужно отобразить отчет в формате PDF и EXcel.

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

Я написал приложение Struts (1.1), которое отображает файлы PDF и CSV.Я бы сделал это в обработчике действий:

public ActionForward execute(ActionMapping mapping, ActionForm form,
        HttpServletRequest request, HttpServletResponse response)
        throws Exception {
    response.setContentType("application/pdf");
    OutputStream out = response.getOutputStream();
    try {
        // generate the PDF
    } finally {
        out.close();
    }
    return null;
 }

ОБНОВЛЕНИЕ: подача коллекций в JasperReports

package reports;

import java.lang.reflect.Method;
import java.util.Collection;
import java.util.Iterator;
import java.util.Arrays;
import net.sf.jasperreports.engine.JRDataSource;
import net.sf.jasperreports.engine.JRField;
import net.sf.jasperreports.engine.JRException;

public class CollectionDataSource implements JRDataSource {
    private Iterator iterator = null;
    private Object current = null;

    public CollectionDataSource(Collection col) {
        if (col != null) {
            iterator = col.iterator();
        }
    }

    public CollectionDataSource(Object array[]) {
        this(Arrays.asList(array == null ? new Object[0] : array));
    }

    public boolean next() throws JRException {
        if (iterator == null || !iterator.hasNext()) {
            return false;
        } else {
            current = iterator.next();
            return true;
        }
    }

    public Object getFieldValue(JRField field) throws JRException {
        if ("this".equals(field.getName())) {
            return current;
        } else if (current == null) {
            return null;
        } else {
            Class<?> clazz = current.getClass();
            char chars[] = field.getName().toCharArray();
            chars[0] = Character.toUpperCase(chars[0]);
            String name = new String(chars);
            Method method = null;
            try {
                method = clazz.getMethod("get" + name);
            } catch (NoSuchMethodException e) {
                if (field.getValueClass() == Boolean.class) {
                    try {
                        method = clazz.getMethod("is" + name);
                    } catch (NoSuchMethodException e1) {
                    }
                }
            }
            if (method == null) {
                throw new JRException("No getter for field " + name);
            }
            try {
                return method.invoke(current);
            } catch (Exception e) {
                throw new JRException("Exception in getter of " + name, e);
            }
        }
    }
}
0 голосов
/ 13 августа 2010

Кажется, есть DefaultJasperViewer.jsp, он упоминается в http://jasperforge.org/plugins/espforum/view.php?group_id=112&forumid=102&topicid=35938

Я думаю, было бы лучше написать taglib. Взгляните сюда: http://seamframework.org/Community/JasperReportsSeam Это связано с JSF и Seam, но может дать некоторое вдохновение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...