Re: Issue in Struts 7.0.0 with <s:form> tag

Wolfgang Knauf <[email protected]> Thu, 17 Apr 2025 23:25:53 +0200
Newsgroups gmane.comp.jakarta.struts.user
Message-ID <[email protected]>
Hi,

the error "java.lang.NullPointerException: Cannot invoke
"org.apache.struts2.ActionInvocation.getProxy()" because "invocation" is
null" sounds like a problem that I ran into: 
https://issues.apache.org/jira/browse/WW-5475

Do you by any chance call JSP pages directly, instead of invoking an 
".action" url?

Best regards

Wolfgang


Am 17.04.25 um 20:46 schrieb shankar sawate:
> I have also tried using Tomcat 11, but I’m still facing the same issue.
> Could you please provide a sample code migrated to Jakarta?
> 
> On Thu, 17 Apr, 2025, 6:25 pm M Huzaifah, <[email protected]> wrote:
> 
>> Hii Shakar,
>>
>> Could you please try to use tomcat 11.
>>
>> I faced issue about file upload using tomcat 11.
>>
>> Regards
>>
>> On Thu, Apr 17, 2025, 2:06 PM shankar sawate <[email protected]>
>> wrote:
>>
>>> Hi Team,
>>>
>>>    If you have any sample code related to Jakarta migration, please share
>> it
>>> with me — it would be really helpful.
>>>
>>> On Thu, Apr 17, 2025 at 12:30 PM shankar sawate <
>>> [email protected]>
>>> wrote:
>>>
>>>>    And I face this issue after deploying.
>>>>
>>>> 17-Apr-2025 12:28:09.568 SEVERE [http-nio-8083-exec-1]
>>>> org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service()
>>> for
>>>> servlet [jsp] in context with path [/jakartaDemo_war_exploded] threw
>>>> exception [java.lang.NullPointerException: Cannot invoke
>>>> "org.apache.struts2.ActionInvocation.getProxy()" because "invocation"
>> is
>>>> null] with root cause
>>>> java.lang.NullPointerException: Cannot invoke
>>>> "org.apache.struts2.ActionInvocation.getProxy()" because "invocation"
>> is
>>>> null
>>>> at
>>> org.apache.struts2.components.Component.getNamespace(Component.java:448)
>>>> at
>>>>
>>>
>> org.apache.struts2.components.Component.determineNamespace(Component.java:433)
>>>> at
>>>>
>>>
>> org.apache.struts2.components.ServletUrlRenderer.renderFormUrl(ServletUrlRenderer.java:141)
>>>> at
>>>>
>> org.apache.struts2.components.Form.populateComponentHtmlId(Form.java:232)
>>>> at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:797)
>>>> at org.apache.struts2.components.UIBean.end(UIBean.java:551)
>>>> at
>>>>
>>>
>> org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:36)
>>>> at
>>> org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:192)
>>>> at org.apache.jsp.index_jsp._jspService(index_jsp.java:141)
>>>> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>>>> at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
>>>> at
>>>>
>>>
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
>>>> at
>>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
>>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
>>>> at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> at
>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:151)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:137)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:125)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> 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:482)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
>>>> 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:344)
>>>> at
>>>>
>>>
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
>>>> at
>>>>
>>>
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>>>> at
>>>>
>>>
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
>>>> at
>>>> org.apache.tomcat.util.net
>>> .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
>>>> 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:63)
>>>> at java.base/java.lang.Thread.run(Thread.java:1583)
>>>> 17-Apr-2025 12:28:09.854 SEVERE [http-nio-8083-exec-4]
>>>> org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service()
>>> for
>>>> servlet [jsp] in context with path [/jakartaDemo_war_exploded] threw
>>>> exception [java.lang.NullPointerException: Cannot invoke
>>>> "org.apache.struts2.ActionInvocation.getProxy()" because "invocation"
>> is
>>>> null] with root cause
>>>> java.lang.NullPointerException: Cannot invoke
>>>> "org.apache.struts2.ActionInvocation.getProxy()" because "invocation"
>> is
>>>> null
>>>> at
>>> org.apache.struts2.components.Component.getNamespace(Component.java:448)
>>>> at
>>>>
>>>
>> org.apache.struts2.components.Component.determineNamespace(Component.java:433)
>>>> at
>>>>
>>>
>> org.apache.struts2.components.ServletUrlRenderer.renderFormUrl(ServletUrlRenderer.java:141)
>>>> at
>>>>
>> org.apache.struts2.components.Form.populateComponentHtmlId(Form.java:232)
>>>> at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:797)
>>>> at org.apache.struts2.components.UIBean.end(UIBean.java:551)
>>>> at
>>>>
>>>
>> org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:36)
>>>> at
>>> org.apache.jsp.index_jsp._jspx_meth_s_005fform_005f0(index_jsp.java:192)
>>>> at org.apache.jsp.index_jsp._jspService(index_jsp.java:141)
>>>> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>>>> at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
>>>> at
>>>>
>>>
>> org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456)
>>>> at
>>> org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:380)
>>>> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:328)
>>>> at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:206)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> at
>> org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.handleRequest(StrutsPrepareAndExecuteFilter.java:151)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.tryHandleRequest(StrutsPrepareAndExecuteFilter.java:137)
>>>> at
>>>>
>>>
>> org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:125)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:175)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:150)
>>>> 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:482)
>>>> at
>>>>
>>>
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)
>>>> 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:344)
>>>> at
>>>>
>>>
>> org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391)
>>>> at
>>>>
>>>
>> org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
>>>> at
>>>>
>>>
>> org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896)
>>>> at
>>>> org.apache.tomcat.util.net
>>> .NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736)
>>>> 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:63)
>>>> at java.base/java.lang.Thread.run(Thread.java:1583)
>>>>
>>>> On Thu, Apr 17, 2025 at 12:04 PM shankar sawate <
>>>> [email protected]> wrote:
>>>>
>>>>> Thank you for your response.
>>>>>
>>>>> I'm using NetBeans 17 as the IDE, with Java 21, and running the
>>>>> application on Tomcat 10.0.20.
>>>>> The issue occurs when I try to run the web application from within the
>>>>> IDE.
>>>>>
>>>>> NetBeans shows the following error when the issue occurs:
>>>>>
>>>>> The s:form tag declares that it accepts dynamic attributes but does
>> not
>>>>> implement the required interface
>>>>>
>>>>> <%@page contentType="text/html" pageEncoding="UTF-8"%>
>>>>> <%@ taglib prefix="s" uri="/struts-tags" %>
>>>>> <!DOCTYPE html>
>>>>> <html>
>>>>>      <head>
>>>>>          <meta http-equiv="Content-Type" content="text/html;
>>>>> charset=UTF-8">
>>>>>          <title>JSP Page</title>
>>>>>      </head>
>>>>>      <body>
>>>>>          <h1>Hello World!</h1>
>>>>>          <s:form>       <!-- The s:form tag declares that it accepts
>>>>> dynamic attributes but does not implement the required interface -->
>>>>>              <s:textfield name="name" value="Enter U name"/>
>>>>>              <s:submit name="submit" value="Add"
>>> action="index"></s:submit>
>>>>>          </s:form>
>>>>>      </body>
>>>>> </html>
>>>>>
>>>>> On Thu, Apr 17, 2025 at 10:59 AM Lukasz Lenart <
>> [email protected]
>>>>
>>>>> wrote:
>>>>>
>>>>>> wt., 15 kwi 2025 o 09:57 shankar sawate <[email protected]>
>>>>>> napisał(a):
>>>>>>> While migrating to Struts 7.0.0, I'm encountering an issue when
>> using
>>>>>> the
>>>>>>> <s:form> tag. Even though the tag is present like this
>>>>>>>
>>>>>>> jsp
>>>>>>> <%--<s:form></s:form>--%>
>>>>>>> I’m getting the following warning or error:
>>>>>>>
>>>>>>> The s:form tag declares that it accepts dynamic attributes but does
>>> not
>>>>>>> implement the required interface
>>>>>>
>>>>>> It would be good to provide more details, when does it happen? What
>>>>>> Java version do you use? Is this in an IDE or when running a webapp
>> in
>>>>>> a container?
>>>>>>
>>>>>> There are a bunch of examples which are working just fine, so I
>> assume
>>>>>> it's something wrong with your setup.
>>>>>> https://github.com/apache/struts-examples/
>>>>>>
>>>>>>
>>>>>> Cheers
>>>>>> Łukasz
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>> For additional commands, e-mail: [email protected]
>>>>>>
>>>>>>
>>>
>>
>