我已经编写了一个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条)