作为View的Result文件,如freemarker文件,不一定放在web目录里面,也没放在classpath下 这时候还能用Convention插件吗? 答案是:可以。解决方案分为两步: 1. 自定义 "struts.convention.resultMapBuilder" 在你自定义的resultMapBuilder中,你要根据action的路径去其对应的View目录中搜得所有View文件,然后将这些文件交给Convention Plugin处理 下面是一个参考实现: public class MyResultMapBuilder extends DefaultResultMapBuilder { @Override protected void createFromResources(Class<?> actionClass, Map<String, ResultConfig> results, String resultPath, String resultPrefix, String actionName, PackageConfig packageConfig, Map<String, ResultTypeConfig> resultsByExtension) { // 找到本action对应的View目录 // //其中getTemplateRootDir()是你的view文件的根目录 File actionTemplateDir = new File(getTemplateRootDir(), flatResultLayout ? resultPath : resultPrefix); // 列出该目录中所有的View文件 Collection<File> actionTemplates = …
[Struts2 Convention] 如果Result文件不在web下或classpath下,怎么办? Read More »