天天看點

【struts2】action中使用通配符

  在以前的學習中,<action>元素的配置,都是用明确的配置,其name、class等屬性都是一個明确的值。其實Struts2還支援class屬性和method屬性使用來自name屬性的通配符。

  1)接下來看看使用通配符的示例,如果我們使用以下<action>配置:

在上面的配置中:

name屬性的值中“*”代表長度不為0的任意字元串,是以,它可以響應的action隻需要名稱中間有一個下劃線即可。比如頁面可通路的action名稱為:HelloWorld_create.action、HelloWorld

_update.action等等。

在name屬性定義了通配符之後,class屬性使用第一個通配符(使用{1}作為占位),method屬性使用第二個通配符。

如果使用HelloWorld_create.action作為通路的action名稱的話,struts.xml中action名稱為HelloWorld_create,第一個通配符比對HelloWorld,第二個通配符比對create。是以,由cn.javass.action.action.HelloWorldAction的create方法來響應。

  2)那麼,對于<result>元素,能不能也使用<action>元素的name屬性定義的通配符呢?答案是可以的,假如有如下的配置:

  3)在使用通配符的時候,也有可能不止一個使用通配符的<action>元素可能比對這次URL的通路,看以下的配置檔案:

  這時候,如果通路“/helloworld/HelloWorld_create.action”,Struts2首先會查找是否有精确比對的<action>元素,這時候無論以上<action>元素以什麼順序出現,Struts2肯定會先找到并使用精确比對的<action>元素。但是,如果沒有精确比對的<action>元素,則Struts2會找到第一個比對的使用通配符的<action>元素來使用。

  通配符對于那些簡單的CRUD的工程或軟體原型來說,隻要Action的包名、Action的類名、對應的方法名寫的有規律的應用,能大大簡化配置的工作。

  參考資料: