Wie kann ich Sie entfernen NullPointerException in Struts1.x
Ich bin neu in STRUTS und bin versuchen zu arbeiten, einfaches Beispiel . Wenn ich das Beispiel auszuführen bekomme ich die folgende Fehlermeldung im internet browser..
<< javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class com.example.LoginForm >>
und in der Eclipse-Konsole finden Sie einen ähnlichen Fehler mit der zusätzlichen Zeile auf Null-Zeiger-Ausnahme
<< SEVERE: Error creating form bean of class com.example.LoginForm
java.lang.NullPointerException >>
Nachfolgend ist ein Teil meines struts-config.xml
struts-config.xml - Auszug
<struts-config>
< form-beans>
< form-bean name="loginRequest" type="com.example.LoginForm" />
</form-bean>
< /form-beans>
< !-- =========================================== Global Forward Definitions -->
< global-forwards>
< forward
name="welcome"
path="/Welcome.do"/>
< /global-forwards>
< !-- =========================================== Action Mapping Definitions -->
< action-mappings>
< action path="/login"
name="loginRequest"
type="com.example.LoginAction">
< forward name="success"
path="/success.jsp">
< /forward>
< forward name="failure"
path="/login.jsp">
< /forward>
</action>
<action path="/Welcome"
forward="/pages/Welcome.jsp"/>
< /action-mappings>
< !-- ======================================== Message Resources Definitions -->
< message-resources parameter="MessageResources" />
< /struts-config>
Meine JSP login.jsp
< %@ taglib prefix="bean" uri="/WEB-INF/struts-bean.tld" %>
< %@ taglib prefix="html" uri="/WEB-INF/struts-html.tld" %>
< bean:message key="title" />
< html:form action="login">
<bean:message key="login.username"/>
<html:text property="username"></html:text>
<br>
<bean:message key="login.password"/>
<html:text property="password"></html:text>
<br>
<html:submit>
<bean:message key="login.submit"/>
</html:submit>
< /html:form>
Die LoginForm-Klasse
package com.example;
import org.apache.struts.action.ActionForm;
public class LoginForm extends ActionForm
{
private String username;
private String password;
public LoginForm()
{
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Der LoginAction-Klasse
package com.example;
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 LoginAction extends Action
{
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception
{
LoginForm login = (LoginForm)form;
String name = login.getUsername();
String pass = login.getPassword();
if(name.equals("hello") && pass.equals("hello"))
return mapping.findForward("success");
else
return mapping.findForward("failure");
}
}
Die MessageResources.Eigenschaften-Klasse
title=Welcome
login.username=Username
loguin.password=Password
login.submit=Submit
Stack-Trace
org.apache.struts.util.RequestUtils createActionForm
SEVERE: Error creating form bean of class com.example.LoginForm
java.lang.NullPointerException
=========== ======================
at org.apache.struts.config.FormBeanConfig.createActionForm(FormBeanConfig.java:289)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:259)
at org.apache.struts.util.RequestUtils.createActionForm(RequestUtils.java:213)
at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:526)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503)
at org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f0(login_jsp.java:122)
at org.apache.jsp.login_jsp._jspService(login_jsp.java:79)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Jun 23, 2011 12:56:47 PM org.apache.struts.util.PropertyMessageResources loadLocale
WARNING: Resource org/apache/struts/taglib/html/LocalStrings_en_US.properties Not Found.
Jun 23, 2011 12:56:47 PM org.apache.struts.util.PropertyMessageResources loadLocale
WARNING: Resource org/apache/struts/taglib/html/LocalStrings_en.properties Not Found.
Jun 23, 2011 12:56:47 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception <br/><br/>
javax.servlet.jsp.JspException: Exception creating bean of class com.example.LoginForm under form name loginRequest
at org.apache.struts.taglib.html.FormTag.initFormBean(FormTag.java:536)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:503)
at org.apache.jsp.login_jsp._jspx_meth_html_005fform_005f0(login_jsp.java:122)
at org.apache.jsp.login_jsp._jspService(login_jsp.java:79)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Kann jemand herausfinden, was ich falsch mache und warum diese Fehler auftreten.
Dank,
Ankit
- Ich don ' T sehen jede Bezugnahme auf CustomerForm in allen code-snippets, die Sie zur Verfügung gestellt. Wo kommt Sie her ?
- posten Sie den stack-trace als auch
- hi ddewaele...by Fehler, die ich stellen falsche Linie, so dass ich jetzt korrigiert es.
- Sind Sie sicher, dass Ihr code ist in sync mit dem, was ist, bereitgestellt ? LoginForm erstellt werden können nur gut und nichts in ihm kann eine nullpointerexception
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie vergessen, eine
/
im action aufhtml:form
.Dies ist, wie sollten Sie nennen Ihre Aktion in der form.
Update, Stellen Sie sicher, dass Sie sauber alle Ihre XML-Dokumente einschließlich Ihrer JSPs
Folgende (Beispiele) durften nicht in den XML-validator:
< form-beans>
< /struts-config>
XML nicht erlaubt, die Räume innerhalb der
<></>
,</>
- tags. Dies gilt auch für die tags zu.Update, ich fand die richtige problem. Es ist Ihre Erklärung für die form-beans in Ihrer
struts-config.xml
.Haben Sie:
Sind Sie schließen Ihre
<form-bean>
zweimal.Lösung:
Nun, das muss funktionieren. 🙂 (Sorry für die späte Antwort, die Arbeit fordert mich.)
Auch, ich empfehlen die Verwendung einer IDE wie Eclipse oder NetBeans zu tun, Ihre Struts Projekt (und nicht alles von hand eingeben zu müssen) und vor allem für Ihre XML-Deklarationen.
LoginForm
zusammengestellt und tut es existiert unter demMETA-INF\classes
Ordner in Ihrer war-Datei?Überprüfen Sie Ihre jsp.Seine Verwendung login als Aktion form statt LoginForm.
Gut, dass Fehler, weil Sie nicht konfigurieren Sie Struts-config.xml richtig.
haben Sie zu geben, insbesondere Form-Bean name als Aktion des Formulars aufgerufen wird, Entsprechend anpassen.
schauen Sie sich jetzt Sie code, den Sie haben, geben Sie der Aktion wie diese.
aber während u nennen POJO auch zusammen, aber Sie zu rufen, die Bohne, bevor Sie POST-Aktion für das Inverkehrbringen alle Daten in die Interaktion mit dem Benutzer.
so stellen Sie eine neue Aktion aufrufen können bean-Klasse, bevor Sie die wichtigsten Maßnahmen genannt.
Beispiel:
so problem gelöst bekommt.