2011-03-17 315 views
4

struts.action.excludePattern在Struts 2中不適用於我,我將servlet cal放在表單動作中,表單將在hyperLink上單擊提交。struts.action.excludePattern不能正常工作,

的struts.xml:

<constant name="struts.action.excludePattern" value="/PunchoutOrder"/> 

的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> 

的jsp:

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

獲得以下錯誤:

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) 

我錯過了什麼...........?

謝謝.....

+0

您使用哪個Struts2版本/過濾器? – 2011-03-17 20:17:39

回答

-1

在web.xml中添加.extention在servlet的URL模式

<servlet-mapping> 
    <servlet-name>PunchoutOrder</servlet-name> 
    <url-pattern>/PunchoutOrder.srl</url-pattern> 
    </servlet-mapping> 
+0

Warrior已經定義了servlet映射。 – 2011-03-17 20:17:10

2

看來,如果你的語法是不完全正確的。我倒在同一個問題上,糾正了爲我工作的正則表達式。添加行

<constant name="struts.action.excludePattern" value="/exclude/.*?"/> 

我的struts.xml,一切都按預期工作。這個路徑中請求現在有404錯誤,而不是支柱的錯誤信息返回「沒有映射命名空間行動......」

歡呼

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> 

要:

<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> 

更換過濾器後,我的排斥模式不斷在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

雖然前一個條目說來顯式聲明的行動擴展,我發現這是固定我的過濾器聲明之後不必要的。

+0

這工作完美:) – 2013-05-29 07:07:02

+2

希望SO可以讓我不止一次upvote這個。經過這麼多天的奮鬥,我想給這個+10真正的救命。在struts2手冊中找不到它的記錄。 – anubhava 2013-07-11 18:52:28