url地址是:
(1) a.action?id=5 
(2) a.action?id=5b
strtus2问题:A method 方法接收id并判断是否是数字。
现在判断出来有错误(图2的url路径)不是数字跳入错误页面。
以后输入是数字(图1的url路径)也跳入错误页面  该(A method)方法不执行 (我自己认为是直接找配置文件去了)

解决方案 »

  1.   

    public class AClass 
    {
    private String id;
    //getter setter 方法,用于自动封装id
    public String getId() {
    return id;
    } public void setId(String id) {
    this.id = id;
    }

    public String execute() throws Exception
    {
    //用与正则表达式验证是否是数字
    return id.matches("[\\d]+")? "str" : "num";
    }

    }
      

  2.   

    这个前几天有人问过的,是因为struts2默认的是singleton,也就是说,整个Action 只有一个实例,如果不想这样,可以该下配置文件就可以了。
    具体的我不太清楚,没搞过,楼主搜下,应该有的
      

  3.   

    struts2是对每次请求,ACTION都创建一个新的.
    struts1才是单例
      

  4.   

    不好意思,上次回答错了, struts2确实是每次都创建新的实例。我昨天自己搞出现了这种情况,原因很简单我在action中忘写get**(),校验框架读数据也是通过get方法来找的。不知道楼主是不是犯和我一样的错误。不然这种问题在struts2中应该不会出现的,楼主在仔细查查
      

  5.   

    该问题我要解释一下,我后来验证,a方法是执行了,如下面代码
    他执行的是else的也就是打印“----------e-------”但是传过去的数字!
                  if ("showproduct".equals(type)) {
    try {
    if ((pid+"").matches("\\d*")) {
    product = productdao.findByPrimaryKey(pid);
    if (product == null) {
    return ERROR;
    }
    productdao.doAddClick(pid); allLevel = memberleveldao.findAll();
    } else {
    System.out.println("----e--------");
    return INPUT;
    }