2
votes

i'm using Struts 2.3.15.2. I wrote my actions:

<action name="ricerca" class="com.emaborsa.doctracing.web.action.ricerca.RicercaUtentiAction" method="ricerca">
    <result name="input" type="tiles">utente.ricerca.def</result>
    <result name="success" type="tiles">utente.elenco.def</result>
</action>

if in the url i call localhost:8080/myProject/ricerca.action it works. If i call localhost:8080/myProject/ricerca!input.action it throws my:

2013-10-16 23:49:50,602 ERROR [org.apache.struts2.dispatcher.Dispatcher] [http-bio-8080-exec-8] Exception occurred during processing request: There is no Action mapped for namespace [/utente] and action name [ricerca!input] associated with context path [/myProject].
There is no Action mapped for namespace [/utente] and action name [ricerca!input] associated with context path [/myProject]. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:553)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
    at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

I don't understand if it is a problem of some setting or something else. On an older version of struts it works but i had to upgrade due to incompatiblity problems with tiles.

2
I don't understand why you have to do that? Are you trying to reach the page? If so, you have to access via .../ricerca.action, then return "input" in the execute() function of RicercaUtentiAction classuser1509803
Because it's a feature of struts2. Otherwise i had to define a further action. If i'm not wrong it is explained also in "Struts in action" book.Emaborsa
You need to enable DMI.Aleksandr M
...isn't it enabled by default?Emaborsa

2 Answers

2
votes

try to set struts.enable.DynamicMethodInvocation = TRUE in your struts.xml

0
votes

Check namespace in your struts-config.xml

<package name="example" namespace="/example">

Please refer this book, It will be given a guide to you.

Struts2 in action