Struts2 ignora un patrón particular
struts2-namespace (3)
probablemente pueda agregar un patrón de exclusión en su struts.xml, algo así como
<struts>
<constant name="struts.action.excludePattern" value="appName/checking"/>
</struts>
lea aquí y encuentre excludePattern para más información.
Estoy usando strust2 para el desarrollo de mi aplicación web. Mi archivo struts.xml será como:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="default" extends="struts-default" namespace ="/">
<action name="signup">
<result>/check.jsp</result>
</action>
</package>
</struts>
y mi archivo web.xml será algo así como:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>sample</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>My WS</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.dr1.dr2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>My WS</servlet-name>
<url-pattern>/checking</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
y ahora, si tengo acceso como: http: // localhost: 8080 / appName / va a mi acción de registro perfectamente. Pero cuando intenté acceder como http: // localhost: 8080 / appName / checking (para webservices), incluso busca en struts.xml y recibe un mensaje de error como:
HTTP Status 404: no se ha asignado ninguna acción para verificar el espacio de nombres / nombre de acción. .. incluso después de definir esto en web.xml ..
¿Hay alguna manera de excluir un patrón en struts2 , de modo que cuando pulso http: // localhost: 8080 / appName / checking , no debe mirar la acción de struts, debe llamar a mi ruta de página predeterminada definida en el archivo web.xml.
Gracias..
<constant name="struts.action.excludePattern" value="appName/checking"/>
las exclusiones explícitas de excludePattern constantes (desde 2.1.7)
esto podría funcionar:
<!-- exclude pattern -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/struts/*</url-pattern>
</filter-mapping>
un examen de acción: