struts.action.excludePattern不工作,

War*_*ior 4 servlets struts2

Struts.action.excludePattern在Struts 2中不适用于我,我在表单操作中放置了servlet cal,表单将在hyperLink上提交点击.

struts.xml中:

<constant name="struts.action.excludePattern" value="/PunchoutOrder"/>
Run Code Online (Sandbox Code Playgroud)

web.xml中

  <servlet>
    <description></description>
    <display-name>PunchoutOrder</display-name>
    <servlet-name>PunchoutOrder</servlet-name>
    <servlet-class>com.PunchoutOrder</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PunchoutOrder</servlet-name>
    <url-pattern>/PunchoutOrder</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

JSP:

<form id="form1" name = "form1" method="post" action="PunchoutOrder">
<input type="image" alt="Submit" src="images/submit.png" onclick="Submit(form1);return false;"/>
Run Code Online (Sandbox Code Playgroud)

低于错误:

15:26:37,512 WARN  [Dispatcher] Could not find action or result
There is no Action mapped for namespace / and action name PunchoutOrder. - [unknown location]
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
    at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
    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:475)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
Run Code Online (Sandbox Code Playgroud)

我错过了什么...........?

谢谢.....

Rus*_*ton 9

我遇到了同样的问题并且遇到了一些如何修复它的提示.但是我发现的解决方案,至少在Struts 2.2.2中,我在web.xml中使用了错误的过滤器.经过一些挖掘谷歌和SO帖子后,我发现改变自:

<filter>
    <filter-name>struts2</filter-name>
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

至:

<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>
Run Code Online (Sandbox Code Playgroud)

更改过滤器后,struts.xml中的排除模式常量立即开始按预期运行.

这也记录在这里:https://cwiki.apache.org/confluence/display/S2WIKI/Troubleshooting+guide+migrating+from+Struts+2.0.x+to+2.1.x#TroubleshootingguidemigratingfromStruts2.0.xto2.1.的x FilterMapping%2CdefaultActionextensions%2CandServlets

虽然前面的条目说要明确声明动作扩展,但我发现修复过滤器声明后没有必要.

  • 希望SO可以让我不止一次地赞成这一点.经过这么多天的奋斗,我想给这个+10真正的救命.没有在struts2手册中找到它. (2认同)