首先在struts.xml中設置以下常量設置:
設置Convention插件是否從jar包中搜索Action類 [可選]
默認值爲true
<constant name="struts.convention.action.disableJarScanning" value="true"
/>
設置Convention插件文件協議類型
<constant name="struts.convention.action.fileProtocols" value="jar,wsjar"
/>
設置Convention插件需要搜索的jar包
<constant name="struts.convention.action.includeJars" value=".*?/struts2-action*.*?jar(!/)?"
/>
該常量指定包作爲根包來搜索Action類。
Convention插件除了掃描默認的action,actions,struts,struts2,還會掃描該常量指定的一個或多個包,
Convention會試圖從指定包中發現Action類。
<constant name="struts.convention.action.packages" value="com.home.prog"
/>
設置完常量後,還要保證打出來包要符合搜索條件,之前我就是問題出在了這裏,由於我是用的maven構建的項目,於是在pom.xml配置文件中加入了以下打包參數:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.1</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
<manifest>
<addDefaultImplementationEntries>true</addDefaultImplementationEntries>
<addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
運用maven打包出來的jar中包含了 META-INF 目錄
然後啓動程序,順利找到jar包中的Action
爲了看到struts2應用裏的Action等各種資源的影射情況,struts2提供了Config
Browser插件。
使用方法,將struts2-config-browser-plugin插件引入到項目中。
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-config-browser-plugin</artifactId>
<version>${struts2.version}</version>
</dependency>
打開首頁地址:http://localhost:端口/發佈應用名稱/config-browser/actionNames.action這裏可以看到Config Browser插件的首頁。
注:在編輯器調試佈置程序中打出來的包中並不包含 META-INF 目錄,struts2不能搜索到jar中的Action。