convention Result规则路径问题

如果你要在action里定义result到指定的jsp,这个业务虽然用的很频繁但是在convention里却不是那么方便。你必须在你跳转的action代码里写上annotations来定义。下面是一段示例代码:
@ResultPath("/WEB-INF/content/")
public class GroupAction extends ActionSupport
{
    private String userName = null;
   
    @Action(value="/group/showTree",results={@Result(name="showTree",location="test.jsp",type="dispatcher")})
    public String showTree()
    {
        this.setUserName("青林科技");
        System.out.println("撒旦法萨达发士大夫撒的");
        return "showTree";
    }
   
    @Action(value="/group/showGrid",results={@Result(name="showGrid",location="test.jsp",type="redirect")})
    public String showGrid()
    {
        this.setUserName("青林科技abc");
        System.out.println("撒旦法萨达发士大夫撒的abc");
        return "showGrid";
    }
   
    @Action(value="/group",results={@Result(name=SUCCESS,location="http://baidu.com",type="redirect")})
    public String execute()
    {
        return SUCCESS;
    }

   
    public String getUserName()
    {
        return userName;
    }

   
    public void setUserName(String userName)
    {
        this.userName = userName;
    }
   
}
@ResultPath("/WEB-INF/content/")是表明result的基础目录;如果你已经在struts.xml里定义了:
<constant name="struts.convention.result.path" value="/WEB-INF/content/"/>
那么就不需要再在代码里写上注解标明了。
那 么你result的jsp就要在这个目录下面。但是仅限于你的result的type="dispatcher"的时候。type="redirect" 他还是会去应用的根目录找jsp这个就不得解了,测试结果是这样。这里必须解释下result里的几个type常量含义我现在只知道四个:
dispatcher:重定向;
redirect:请求转发;
chain:不清楚含义,好像只针对action不能用于跳转jsp;
缺省:功能同dispatcher。
所有上面的那个问题为什么不行就有了另外一个逻辑的排除方法:因为redirect是重定向所以他不可以访问到WEB-INF/里的的资源,所有他也不支持@ResultPath的定义咯。呵呵牵强了。

@Action(value="/group/showTree",results={@Result(name="showTree",location="test.jsp",type="dispatcher")})
这 样写还有个问题。如果把test.jsp放在/WEB-INF/content/下面,result是找不到test.jsp的,因为他会去找/WEB- INF/content/group/test.jsp这个文件,因为action的名字value="/group /showTree",convention是希望我们在开发的时候类模块的包名跟视图模块的包名相同,这确实有好处也清楚明了。但是不能忽略特殊情况, 这里有两种解决方法:1,修改location="/test.jsp"成这样;2,修改value="/showTree"成这样。ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值