struts2通配符的应用以及action、result、package的name和namespace属性同名时的处理方法
来源:互联网 发布:网上卖东西的软件 编辑:程序博客网 时间:2024/06/04 18:18
1.对于同一个<package>下两个name属性相同的<action>,struts2是这样处理的,后面的<action>将覆盖前面的<action>
2.对于同一个<action>下两个name属性相同的<result>,struts2是这样处理的,后面的<result>将覆盖前面的<result>
3.配置文件中两个同name属性的<package>(无论是否在同一xml文件中),struts2是这样处理的,启动tomcat时,会报错。
4.配置文件中两个不同name属性,但namespace属性相同的<package>,struts是这样处理的,将两个<package>下的<action>合并,遇到相同name属性的<action>时,后面<package>定义的<action>将覆盖前面<package>的<action>。
最近在项目中使用了通配符缩减繁杂的result配置,(例如:如果访问这个http://localhost:8080/project/admin/photo_edit.jhtml,Action中方法的返回值为photo_edit,寻找相应的jsp页面为photo_edit.jsp)默认的dispatcher转发都没有什么问题,但如果出现特殊的需要处理的result时,遇到了问题,比如下面我想在访问edit这个方法是redirectAction到photo_query这个action处理:
- 1个通配符
<action name="photo_*" class="photowallAction" method="{1}"><result name="photo_edit" type="redirectAction">photo_query</result><result name="photo_{1}">/WEB-INF/page/admin/photo_{1}.jsp</result></action>
struts.xml文件配置如上。现在我访问的路径为:http://localhost:8080/project/admin/photo_edit.jhtml,如下action中方法代码:public String edit() {try {log.info("<---- PhotowallAction Method:init Begin ---->");if (photowallId == null) {photowallService.savePhotowall(type,photowall);}else{photowall.setPhotowallId(photowallId);photowallService.updatePhotowall(type,photowall);}} catch (Exception e) {log.error("<---- PhotowallAction Method:init Error ---->", e);}log.info("<---- PhotowallAction Method:init End ---->");return "edit";}
如此以来,就会在该action的result下出现两个都能通配的情况,按照struts2的通配规则,后者,也就是dispatcher会覆盖前者的redirectAction,直接寻找photo_edit.jsp这个文件,当然这显然不是我想要的结果,所以只能改变一些特殊的返回值,此处我只能为该方法指定例外返回值:"改为edit",在配置文件中改为edit,当作特殊的处理。 - 两个通配符*_*
<action name="*_*" class="f{1}Action" method="{2}"><result name="success">/WEB-INF/page/front/${contents}/${jspFile}</result><result name="{1}_{2}">/WEB-INF/page/front/home/{1}_{2}.jsp</result></action>
根据上面的分析,两个通配符的使用会大大的缩减package中Action的配置,所以使用了上面的配置,但是不要忘记了需要特殊处理的返回值,例如上面的返回值为success的,我就是使用的动态确认返回值。
通配符的使用的前提是action、method和jsp页面都要有统一的命名规范。
- struts2通配符的应用以及action、result、package的name和namespace属性同名时的处理方法
- 关于<action><result><package>的name和namespace属性同名时struts2的处理
- struts.xml属性重名处理:关于<package><action><result>的name和namespace属性同名时struts2的处理
- struts2中<action><result><package>的name和namespace属性同名
- struts2配置中Action的name和package的name和namespace的用法,以及extends属性
- 【struts2】struts2配置中Action的name和package的name和namespace有什么作用 ?
- 【struts2】struts2配置中Action的name和package的name和namespace有什么作用 ?
- struts2配置中Action的name 和package的name和namespace作用
- struts2中Action的name 和package的name和namespace是什么作用
- struts2中Action的name 和package的name和namespace是什么作用
- Struts2 配置文件result的name属性和type属性
- Struts2 配置文件result的name属性和type属性
- Struts2 配置文件result的name属性和type属性
- Struts2 配置文件result的name属性和type属性
- Struts2 - result标签的name属性和type属性
- Struts2 配置文件result的name属性和type属性
- Struts2 - result标签的name属性和type属性。
- struts.xml中的include标签和package标签以及action标签的name属性
- 平时用的注解解析
- 【打表找规律】2013寒假SD高校ACM周赛5——I’ve Got Your Back(gammon)
- SAP User Activity
- NSString子字符串汉字替换
- 内存管理详解
- struts2通配符的应用以及action、result、package的name和namespace属性同名时的处理方法
- Android学习笔记之NFC近距离无线通讯技术(Dean)
- JS监听关闭浏览器事件
- HADOOP SHELL 官方文档
- struts2.18整合json和ExtJs4.0实例
- Oracle 笔记
- VC中free()函数调试错误原因
- 九度OJ 题目1058:反序输出
- Objective-C的新特性