首页 > 代码库 > 转:关于beetl集成struts2 +convention插件无法识别beetl模板的处理方案
转:关于beetl集成struts2 +convention插件无法识别beetl模板的处理方案
转自 jplus 文章
今天第一次接触这个模板引擎,感觉非常不错,平时都是使用spring mvc开发,目前教带学生做一个小项目,使用struts+guice+mybatis,于是想试试这个模板引擎开开实际使用情况。
因为目前项目完全采用零配置方案,就出现了一个问题
根据Beetl使用手册的说明:
需要在struts2配置文件里添加result-types做如下配置
?
<package name="default" namespace="/" extends="struts-default"> .......
<result-types>
<result-type name="beetl" class="org.beetl.ext.struts2.Struts2BeetlActionResult" default="true" />
</result-types>
<action name="HelloWorld" class="example.HelloWorld"> <result>/hello.html</result>
</action> ........ </package>
在常规的基于struts配置文件的开发过程中是完全没有问题的,但是如果一旦与 convention集成将无法完全享受beetl的功能,除非使用注解完成复杂配置。
比较方便的是struts2是开源的,根据对源代码的大致分析主要问题有两点
1.添加convention默认结果视图类型
<constant name="struts.convention.default.parent.package" value="http://www.mamicode.com/ssia" /> <constant name="struts.convention.relative.result.types" value="http://www.mamicode.com/dispatcher,velocity,freemarker,beetl"/> <package name="ssia" namespace="/" extends="convention-default"> <result-types> <result-type name="beetl" class="org.beetl.ext.struts2.Struts2BeetlActionResult" default="true" /> </result-types> </package>
2.修改convention视图文件扫描扩展名,将我们自己的btl文件也作为convention的视图
<bean type="org.apache.struts2.convention.ConventionsService" name="beetlService" class="com.ssia.web.struts.plugin.convention.beetl.ConventionsBeetlService"/> <constant name="struts.convention.conventionsService" value="http://www.mamicode.com/beetlService"/> public class ConventionsBeetlService extends ConventionsServiceImpl { @Inject public ConventionsBeetlService( @Inject("struts.convention.result.path") String resultPath) { super(resultPath); } public Map<String, ResultTypeConfig> getResultTypesByExtension(PackageConfig packageConfig) { Map<String, ResultTypeConfig> results = packageConfig.getAllResultTypeConfigs(); Map<String, ResultTypeConfig> resultsByExtension = super.getResultTypesByExtension(packageConfig); resultsByExtension.put("btl", results.get("beetl")); return resultsByExtension; } }
经过上述的修改与配置struts2-convention插件与beetl模板引擎将可以融合工作了,spring mvc则不会出现此类情况
转:关于beetl集成struts2 +convention插件无法识别beetl模板的处理方案