您的位置:首页 > 编程语言 > Java开发

struts2通配符的应用以及action、result、package的name和namespace属性同名时的处理方法

2013-01-31 14:27 405 查看
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页面都要有统一的命名规范。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐