2012-10-02 12 views
1

我想僅將Struts攔截器應用於路徑的子集。例如。例如,只有路徑以「/ api」開頭的請求。將struts攔截器應用到路徑的子集?

似乎有點像一個沒有腦子的人,但到目前爲止,我的google-fu已經讓我失望了。有人能指引我朝着正確的方向嗎?

謝謝!

+0

HTTP://struts.apache。組織/ 2.3.4 /文檔/ interceptors.html。在struts.xml文件中,我們可以定義多個包。請參考以下示例http://stackoverflow.com/questions/3662705/struts2-have-two-packages-in-struts-xml-point-to-dynamic-web-root as @Dave說我們可以定義攔截器棧包級別。 –

回答

3

攔截器可按每個包定義,例如,使用默認攔截器。在你的例子中,它將是包含「/ api」命名空間的包。

另一種選擇是配置攔截器(每個動作),這是令人煩惱的。

+0

有趣。你知道一個例子,你可以指點我嗎?謝謝。 – denishaskin

+0

@denishaskin一個什麼樣的例子?每個軟件包都有自己的攔截器堆棧,每個軟件包都可以設置自己的默認攔截器 - S2文檔給出了示例。 –

+0

啊,@ suke的回答是我以前想的。 – denishaskin

1

在你的struts.xml中,你可以定義一個新包

<package name="yourpackage" extends="default" namespace="/api">  
    <default-interceptor-ref name="yourInterceptorStack"/> 
</package> 

在動作類,可以按如下方式指定的包,

@ParentPackage("yourpackage") 
public class YourAction extends ActionSupport { 
    ... 
}