Struts 2: no hay ninguna acción asignada para el espacio de nombres

Soy nuevo en Struts 2 y he seguido un video tutorial en Struts 2 (Koushik). Creé Struts.xml, la clase de acción y los JSP como se crearon en el tutorial. Pero da la siguiente excepción.

Excepción:

Jan 13, 2014 9:30:48 PM org.apache.struts2.dispatcher.Dispatcher warn WARNING: Could not find action or result: /Struts2Starter/getTutorial.action There is no Action mapped for namespace [/] and action name [getTutorial] associated with context path [/Struts2Starter]. - [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:37) at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552) 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.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 

Struts.xml

      /success.jsp /error.jsp    

Web.xml

   Struts2Starter  index.html index.htm index.jsp default.html default.htm default.jsp   struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter   struts2 /*   

TutorialAction.java (clase de acción que estoy usando)

 package org.koushik.javabrains.action; public class TutorialAction { public String execute(){ System.out.println("Hello from execute"); return "success"; } } 

Estructura del proyecto

Estructura de la aplicación

success.jsp y error.jsp son archivos jsp normales con texto. Hice muchas cosas para resolver este problema buscando en Google. Pero nada no resolvió esto. Por favor, avíseme si alguien sabe qué hay detrás de esto. Lo aprecio mucho 🙂

Cambiar el nombre de la convención de nomenclatura de Struts.xml a struts.xml funcionará.

El mensaje de error dice claramente que

no Acción asignada para espacio de nombres [/] y nombre de acción [getTutorial] asociado con la ruta de contexto [/ Struts2Starter]

Esto significa que la configuración de la acción no está disponible en tiempo de ejecución. Consulte el complemento config-browser para depurar problemas de configuración.

Para asignar correctamente la URL a la acción, se requieren dos parámetros: el nombre de la acción y el espacio de nombres.

Struts carga la configuración xml en el inicio y debe conocer la ubicación de struts.xml . De forma predeterminada, busca en classpath para encontrar un archivo con nombre conocido como struts.xml . Luego analiza el documento y crea una configuración en tiempo de ejecución. Esta configuración se usa para encontrar el elemento de configuración apropiado para la url de acción. Si no se encuentra dicho elemento durante la solicitud, el código de error 404 se devuelve con el mensaje: There is no Action mapped for namespace and action name .

Además, este mensaje contiene un espacio de nombres y nombres de acción utilizados para encontrar la configuración de acción. Luego puede verificar sus configuraciones en struts.xml . A veces, el nombre de la acción y el espacio de nombres, almacenados en ActionMapping apuntan a la acción incorrecta. Estos valores están determinados por ActionMapper que podría tener una implementación diferente, utilizada por los complementos.

También hay otra configuración que podría afectar a este correlacionador y al mapeo, pero el punto es el mismo si se recibe este mensaje, luego se usa la URL, no se asignó ninguna configuración de acción en la configuración del tiempo de ejecución. Si no puede saber qué URL debe usar, puede probar el complemento config-browser para ver la lista de URL disponibles para usar.

cambie su Struts.xml y ponga en struts.xml Development mode or devMode habilita la depuración adicional y ayuda a indebugging probar el código siguiente

        /success.jsp /error.jsp    

Solo necesito verificar que el nombre de la acción sea constante en todas partes … también tuve el mismo problema, resolví eliminando el espacio de nombres, ya que no es necesario y no he mencionado y también tenía un nombre de acción diferente en loginpage.jsp y struts. página xml … así que solo vea su nombre de acción

Su archivo JSP no debe estar en la carpeta WEB-INF, sino que debe estar debajo de la carpeta web. Adjunté una imagen para mostrarle la jerarquía correcta.

Sistema de carpetas

Acabo de hacer el tutorial y tuve el mismo problema. Resultó que el problema era que el archivo struts.xml estaba en la ubicación incorrecta. Asegúrese de que su archivo struts.xml se encuentre aquí: /Struts2Starter/src/struts.xml

    Intereting Posts