jsp configuration struts2 namespaces action

jsp - Struts2 No hay ninguna acción asignada para el espacio de nombres



configuration namespaces (1)

Soy un principiante de Struts2, sé que esta pregunta se ha hecho aquí muchas veces, pero traté de resolverlo y leer muchos hilos aquí, pasar 6 horas y todavía no puedo hacer que funcione. Realmente necesito más sugerencias ...

Aquí está mi paquete

Struts2Test +Struts2Test/src +tw.com.rrstudio.java.test -TestAction.java +Struts2Test/build +Struts2Test/WebContent +Struts2Test/WebContent/META-INF +Struts2Test/WebContent/WEB-INF/classes +Struts2Test/WebContent/WEB-INF/lib -Struts2Test/WebContent/WEB-INF/spring-context.xml -Struts2Test/WebContent/WEB-INF/spring-mvc.xml -Struts2Test/WebContent/WEB-INF/struts.xml -Struts2Test/WebContent/WEB-INF/struts2-action.xml -Struts2Test/WebContent/WEB-INF/web.xml -Struts2Test/WebContent/error.jsp -Struts2Test/WebContent/index.jsp -Struts2Test/WebContent/TestAction.jsp

Mi web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Struts2Test</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <context-param> <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring-context.xml /WEB-INF/spring-mvc.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>actionPackages</param-name> <param-value>tw.com.rrstudio.java.test</param-value> </init-param> </filter> <jsp-config> <taglib> <taglib-uri>HTTP://java.sun.com/jsp/jstl/core</taglib-uri> <taglib-location>/WEB-INF/lib/tld/c.tld</taglib-location> </taglib> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>10</session-timeout> </session-config> </web-app>

Y también, struts.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- struts 2.3.16.3 has problem of security,needing to set DynamicMethodInvocation=false --> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.objectFactory" value="spring" /> <constant name="struts.action.extension" value="do"/> <constant name="struts.action.excludePattern" value="/jsp/.*?,/image/.*?,/css/.*?,/js/.*?,.*//.jsp"/> <package name="default" extends="json-default" ></package> <package name="Strut2Test" extends="json-default" > <global-results> <result name="SystemErrorPage">/WebContent/error.jsp</result> </global-results> <action name="login" class="tw.com.rrstudio.java.test.TestAction"> <result name="index">/WebContent/index.jsp</result> <result name="success">/WebContent/TestAction.jsp</result> </action> </package> </struts>

index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META HTTP-EQUIV="Refresh" CONTENT="0;URL=login.action"> <title>Index of Struts2Test</title> </head> <body> <h1>Index of Struts2Test</h1> <form action="testAction" method="post"> <label for="name">Please enter your name</label><br/> <input type="text" name="name"/> <input type="submit" value="Say Hello"/> </form> </body> </html>

El servidor es Tomcat 8.0.38, comienza sin error. Pero cuando tengo acceso

me da este error (como título) y si tengo acceso

Obtendré un resultado 404 normal.

Ahora no tengo idea, cualquier sugerencia o sugerencia es bienvenida ...


Problemas relacionados con: No hay una acción asignada para el espacio de nombre y el nombre de acción asociados con la ruta de contexto

Si usa la url para llamar a una acción, asegúrese de que esta URL esté asignada a la configuración de struts. Para solucionar el problema con el mapeo de url, puede usar el complemento config-browser. Simplemente agregue este complemento a las dependencias de su proyecto y cuando se implemente, puede acceder a un sitio web que le muestra una configuración en tiempo de ejecución con direcciones URL disponibles para invocar la acción. Por ejemplo, si está ejecutando Tomcat localmente en el puerto 8080 y desplegó su aplicación en el context , puede acceder a la URL del complemento con

http://localhost:8080/[context]/config-browser/index.action

Puede hacer clic en cualquier acción disponible en la página de acciones debajo del espacio de nombres en la barra lateral. También tenga en cuenta que si su acción no se encuentra en el paquete, podría estar en el paquete default . Struts realiza una búsqueda adicional en el espacio de nombres default para la acción que no se encuentra en el espacio de nombres correlacionado con la URL.

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.