Announcement

Collapse
No announcement yet.

Struts + Itext - PDFs per Klick erzeugen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Struts + Itext - PDFs per Klick erzeugen

    Hallo Leute!
    Derzeit versuche ich ein PDF On-the-Fly zu erstellen und dem Browser zuzusenden. Leider funktioniert das nicht so, wie ich es mir vorstelle.
    Ich muss dazu sagen, dass ich ein Struts-Anfänger bin und keine Ahnung
    habe, wo der Fehler liegen könnte.

    Nachfolgend der Code

    test.jsp:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1252"%>
    <%@ page contentType="text/html;charset=windows-1252"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
    <title>test</title>
    </head>
    <body>
    <html:form action="/Test">
    <html:submit value="Submit"/>
    </html:form>
    </body>
    </html:html>

    --------------------------------------------

    Struts-config.xml:


    <?xml version="1.0" encoding="windows-1252" ?>
    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">
    <struts-config>

    <action-mappings>
    <action path="/Test" type="testapp.test"/>
    </action-mappings>

    <message-resources parameter="testapp.ApplicationResources"/>

    </struts-config>


    ------------------------------------

    test.java:


    package testapp;

    import com.lowagie.text.Document;
    import com.lowagie.text.Paragraph;
    import com.lowagie.text.pdf.PdfWriter;
    import java.io.ByteArrayOutputStream;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;

    public class test extends Action {
    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    try{
    Document document = new Document();
    ByteArrayOutputStream stream = new ByteArrayOutputStream();
    PdfWriter writer = PdfWriter.getInstance(document, stream);
    document.open();
    document.add(new Paragraph("Hello World"));
    document.close();

    response.setContentType("application/pdf");
    response.setContentLength(stream.size());
    ServletOutputStream out = response.getOutputStream();
    stream.writeTo(out);
    }
    catch(Exception e) {
    e.printStackTrace();
    }

    return null;

    }
    }

    ----------------------------------

    Als Fehler erhalte ich jedoch nur einen Error 500:

    Error 500--Internal Server Error
    javax.servlet.jsp.JspException: Cannot retrieve definition for form bean null on action /Test
    at org.apache.struts.taglib.html.FormTag.lookup(FormT ag.java:767)
    at org.apache.struts.taglib.html.FormTag.doStartTag(F ormTag.java:443)
    at jsp_servlet.__welcome._jsp__tag1(__welcome.java:15 7)
    at jsp_servlet.__welcome._jsp__tag0(__welcome.java:12 5)
    at jsp_servlet.__welcome._jspService(__welcome.java:9 0)
    at weblogic.servlet.jsp.JspBase.service(JspBase.java: 34)
    at weblogic.servlet.internal.StubSecurityHelper$Servl etServiceAction.run(StubSecurityHelper.java:227)
    at weblogic.servlet.internal.StubSecurityHelper.invok eServlet(StubSecurityHelper.java:125)
    at weblogic.servlet.internal.ServletStubImpl.execute( ServletStubImpl.java:292)
    at weblogic.servlet.internal.ServletStubImpl.onAddToM apException(ServletStubImpl.java:408)
    at weblogic.servlet.internal.ServletStubImpl.execute( ServletStubImpl.java:318)
    at weblogic.servlet.internal.TailFilter.doFilter(Tail Filter.java:26)
    at weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56)
    at oracle.dms.wls.DMSServletFilter.doFilter(DMSServle tFilter.java:202)
    at weblogic.servlet.internal.FilterChainImpl.doFilter (FilterChainImpl.java:56)
    at weblogic.servlet.internal.WebAppServletContext$Ser vletInvocationAction.run(WebAppServletContext.java :3588)
    at weblogic.security.acl.internal.AuthenticatedSubjec t.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(Se curityManager.java:121)
    at weblogic.servlet.internal.WebAppServletContext.sec uredExecute(WebAppServletContext.java:2200)
    at weblogic.servlet.internal.WebAppServletContext.exe cute(WebAppServletContext.java:2106)
    at weblogic.servlet.internal.ServletRequestImpl.run(S ervletRequestImpl.java:1428)
    at weblogic.work.ExecuteThread.execute(ExecuteThread. java:201)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java :173)


    -----------------------

    Kann mir irgendjemand weiterhelfen? Mein Ziel ist es, wie bereits gesagt, eine PDF On-the-Fly, also ohne Zwischenspeicherung an den Browser zu senden und dort angezeigt zu bekommen.

    Viele Grüße
    noxare

  • #2
    Dir dürfte die FormBean für deine HTML-Seite fehlen -> TestFormBean
    http://struts.apache.org/1.x/userGui...tml#actionform
    Christian

    Comment

    Working...
    X