Struts2註解Convention掃描jar中的Action的設置

首先在struts.xml中設置以下常量設置:
    設置Convention插件是否從jar包中搜索Action類 [可選] 默認值爲true
    <constant name="struts.convention.action.disableJarScanningvalue="true" />
    設置Convention插件文件協議類型
    <constant name="struts.convention.action.fileProtocolsvalue="jar,wsjar" />
    設置Convention插件需要搜索的jar包
    <constant name="struts.convention.action.includeJarsvalue=".*?/struts2-action*.*?jar(!/)?" />
    該常量指定包作爲根包來搜索Action類。
    Convention插件除了掃描默認的action,actions,struts,struts2,還會掃描該常量指定的一個或多個包,
    Convention會試圖從指定包中發現Action類。
    <constant name="struts.convention.action.packagesvalue="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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章