尝试执行一个集成struts2框架的简单登录页面。我在 struts 密码标签中遇到空指针异常

问题描述 投票:0回答:1

来自服务器的错误日志:

SEVERE: Servlet.service() for servlet [jsp] in context with path [/DiscussionHub] threw exception [
        An exception occurred processing [login.jsp] at line [17]  
            14:   
            15:         <s:form action="Login"> 
            16:             <s:textfield name="userName" label="UserName" /> 
            17:             <s:password name="password" label="Password" /> 
            18:             <s:submit value="login" align="center"/> 
            19:         </s:form> 
            20:     
    Stacktrace:] with root cause java.lang.NullPointerException: Cannot invoke "java.util.List.add(Object)" because "tags" is null 
    at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:816) 
    at org.apache.struts2.components.UIBean.end(UIBean.java:550) 
    at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:40) 
    at org.apache.jsp.login_jsp._jspx_meth_s_005ftextfield_005f0(login_jsp.java:271) 
    at org.apache.jsp.login_jsp._jspx_meth_s_005fform_005f0(login_jsp.java:225) 
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:156) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:623) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:154) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:140) 
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:128) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:673) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390) 
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) 
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:926) 
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791) 
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) 
    at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) 
    at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.base/java.lang.Thread.run(Thread.java:833) 

登录.jsp:

<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
    <head>
      <title>
            Struts 2 s:textfield, s:password and s:submit UI tags example
          </title>
    </head>
    <body>
      <h3>
           This is a s:textfield, s:password and s:submit UI tags example.
          </h3>
 
        <s:property value="message" /> <br/>
 
        <s:form action="Login">
            <s:textfield name="userName" label="UserName" />
            <s:password name="password" label="Password" />
            <s:submit value="login" align="center"/>
        </s:form>
 
    </body>
</html>

我不知道如何解决这个空指针异常,因为错误出现在密码标记行中。

java jsp struts2
1个回答
0
投票

谢谢,更换struts版本后解决。我使用的是不兼容的最新 struts 版本。更改为 struts 2.5.33 后它起作用了!!!

© www.soinside.com 2019 - 2024. All rights reserved.