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
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
Comment