2011-06-23 3 views
0

私はSTRUTSを初めて使用しており、簡単な例を試してみようとしています。私は例を実行すると、私は、インターネットブラウザ上で次のエラーを取得します。..Struts1.xでNullPointerExceptionを削除するには

<< javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception creating bean of class com.example.LoginForm >> 

とEclipseのコンソールで以下の上場

<< SEVERE: Error creating form bean of class com.example.LoginForm 
java.lang.NullPointerException >> 

nullポインタ例外に追加行で同様のエラーを参照してください一部であります私struts-config.xml

のstruts-config.xmlのの - エキス

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

私の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> 

LoginFormクラス

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; 
    } 

} 

LoginActionのクラス

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");  
    }  
} 

MessageResources.propertiesクラス

title=Welcome 
login.username=Username  
loguin.password=Password  
login.submit=Submit 

スタックトレース

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) 

私は何が間違っているのか、そしてなぜこのエラーが発生しているのか誰にも分かります。あなたはhtml:formにあなたの行動で/を忘れてしまった

おかげで、
Ankit

+0

提供したすべてのコードスニペットでCustomerFormへの参照が表示されません。それはどこから来ていますか? – ddewaele

+0

同様にスタックトレースを投稿する – fmucar

+0

こんにちはddewaele ...誤って私は間違った行を入れるので、今修正しました。 – user751786

答えて

3

フォームでアクションを呼び出す方法です。

<html:form action="/login"> 

更新、XMLバリデータでは許されなかった、あなたのJSPの

以下(例)を含め必ずきれいすべて XMLドキュメントを作成します。

  • < form-beans>
  • < /struts-config>

XMLでは、<></>,</>タグ内にスペースは使用できません。これはタグにも適用されます。


更新、私は正しい問題を発見しました。 struts-config.xmlのフォームビーンの宣言です。

あなたが持っている:あなたは、あなたの<form-bean>二回を閉じている

<form-beans> 
    <form-bean name="loginRequest" type="com.example.LoginForm" />  
</form-bean> 
</form-beans> 

ソリューション:

< form-beans> 
    <form-bean name="loginRequest" type="com.example.LoginForm" />  
</form-beans> 

さて、これが動作しなければなりません。 :-)(遅れて申し訳ありません、仕事は私に要求します

また、EclipseやNetBeansなどのIDEを使用してStrutsプロジェクトを行うことをお勧めします。あなたのXML宣言。

+0

hi elite ...私はこれをしましたが、動作しませんでした。 – user751786

+0

はい、私はタグの中にスペースを入れませんでした...私はコードを投稿するためだけにスペースを与えました。 – user751786

+0

'LoginForm'はコンパイルされていますか?それはWARファイルの' META-INF \ classes'フォルダの下にありますか? –

0

LoginFormではなく、ログインをアクションフォームとして使用してください。

0

このエラーは、Struts-config.xmlを適切に設定していないためです。

フォームのアクションが呼び出されると、特定のフォームビーン名を指定する必要があります。

あなたのコードを見て、あなたはこのような行動をしています。

< action path="/login" name="loginRequest" type="com.example.LoginAction"> 
< forward name="success" path="/success.jsp">< /forward> 

しかしuが一緒にもPOJOを呼んでいるが、あなたは、あなたがユーザーとの対話に任意のデータを置くためのPOSTアクションを行う前に、そのBeanを呼び出す必要がありながら。 メインアクションが呼び出される前に、Beanクラスを呼び出すことができる新しいアクションを1つ作成します。例えば

:その方法の問題が解決してしまいます

< action path="/loginPre" name="loginRequest" forward="/youloginformname.jsp"> 
</action> 

関連する問題