如何设置基础包来扫描子包的动作?

时间:2013-06-06 10:04:44

标签: java configuration struts2 struts2-convention-plugin

如何告诉Struts 2约定插件扫描包的所有子包。我试过这个

<constant name="struts.convention.action.suffix" value="Controller" /> 
<constant name="struts.convention.package.locators.basePackage" value="fi.fpf.mvc" />

和这个

<constant name="struts.convention.action.suffix" value="Controller" /> 
<constant name="struts.convention.package.locators.basePackage" value="fi.fpf.mvc.*" />

但它们不起作用。我的行为以"Controller"后缀结尾。有人知道怎么做吗?

这是我的struts.xml

<struts>

    <constant name="struts.convention.exclude.parentClassLoader" value="true"/>
    <constant name="struts.convention.action.fileProtocols" value="jar,vfs,vfsfile,vfszip"/>
<constant name="struts.convention.action.suffix" value="Controller" /> 
    <constant name="struts.convention.package.locators.basePackage" value="fi.fpf.mvc" />


    <package name="fpf-default" extends="struts-default">
        <result-types>
            <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>
    </package>
</struts>

并采取一项措施:

@Action("indexController")
public class IndexController extends ActionSupport{

    private static final long serialVersionUID = -2613425890762568273L;


    @Action(value="loadIndex", results={
            @Result(name="indexView", location = "indexView", type="tiles")
    })
    public String loadIndex() {
        return "indexView";     
    }    
}

1 个答案:

答案 0 :(得分:3)

尝试

<constant name="struts.convention.action.packages" value="fi.fpf.mvc.*"/>

如果您使用的是约定插件,那么您应该遵循类和包名称约定。为什么不将基础包命名为“struts”或“struts2”,并使用默认的包定位器。类也应该具有匹配"Action"后缀的名称。

  

您可以告诉Convention插件忽略某些包使用   财产struts.convention.exclude.packages。你也可以告诉你   插件使用不同的字符串来定位根包   财产struts.convention.package.locators。最后,你可以告诉   插件使用该属性搜索特定的 root 包   struts.convention.action.packages

请参阅docs

或者,您可以设置与此包匹配的基本包和定位器以及基本

下的任何包
<constant name="struts.convention.package.locators.basePackage" value="fi.fpf.mvc"/>
<constant name="struts.convention.package.locators" value="fi,fpf,mvc"/>