Struts2.0通配符问题

       最近两天刚接触Struts2.0,没有什么现成的教科书,只是根据官网的一些说明文档来学习。过程中遇到了许多莫名其妙的问题,解决的方法也更是莫名其妙。
首先是通配符的问题:
最开始的Struts配置文件如下: 

< struts >
        
< package  name ="org.emarket.begin"  namespace ="/begin"  extends ="struts-default" >
            
< action  name ="helloworld"  class ="org.emarket.begin.HelloWorld" >
                
< result > /begin/helloworld.jsp </ result >
            
</ action >
            
< action  name ="*" >
                
< result > /begin/{1}.jsp </ result >
            
</ action >
            
< action  name ="login!*"  method ="{1}"  class ="org.emarket.begin.Login" >
                
< result  name ="input" > /begin/login.jsp </ result >
                
< result  type ="redirect-action" > test </ result >
            
</ action >
        
</ package >
    
</ struts >

编写了一个form表单,其action属性设为login,表单使用了Validator验证,可是不管怎样输入表单栏位,提交后的结果总是跳转 到/begin/login.jsp页面,而不是SUCESS页面。开始觉得很奇怪,为什么login!*通配符不起作用。
将配置文件更改为:

< struts >
        
< package  name ="org.emarket.begin"  namespace ="/begin"  extends ="struts-default" >
            
< action  name ="helloworld"  class ="org.emarket.begin.HelloWorld" >
                
< result > /begin/helloworld.jsp </ result >
            
</ action >
            
< action  name ="login!*"  method ="{1}"  class ="org.emarket.begin.Login" >
                
< result  name ="input" > /begin/login.jsp </ result >
                
< result  type ="redirect-action" > test </ result >
            
</ action > <!--  顺序置换  -->
            
< action  name ="*" >
                
< result > /begin/{1}.jsp </ result >
            
</ action >
        
</ package >
    
</ struts >
一切恢复正常,原来是action的编写顺序导致最开始时使用的是<action name="*">通配符来查找action,而没有使用<action name="login!*">,action的编写顺序不是任意的,拥有最大通配范围的Action应放到最后来编写。
我知道这种问题对于老鸟们不屑一顾,可对于Struts2.0刚起步的菜鸟来讲,让我由实感到“莫名其妙”。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值