我刚学struts2不久,现在有点疑问我希望大家能多多指教,在struts2中每个请求一般都对应一个action
比如 我在User.acton 类是这样定义的
User extends ActionSupport
{
    private int id;
    private String name;
    Private String password;    getter{
    .......
   }
   setter{
   ........
}
}
然后在提单表单的页面中
<input type="text" name="id">
<input type="text" name="name">
<input type="text" name="password">
这个时候上面三个都输入值不会抛异常而有些时候我想查询的时候还能用这个acton 么? 因为查询一般就传一个id这个值就行了啊,而如果上面的acton会抛异常
而且如果用了validate()方法 就不能通过验证了,那我是不是可以这样理解就是针对user的增、删、改、查 每个都要建立新的action 类 进行处理?  我感觉不应该是这样的,但因为我是刚学的菜鸟不知道应该是什么样子请各位能多多指教 谢谢!!

解决方案 »

  1.   

    看到有人说用Dynamic method 的动态方法 不知道用这个会有什么弊端
      

  2.   

    而有些时候我想查询的时候还能用这个acton 么? 因为查询一般就传一个id这个值就行了啊,而如果上面的acton会抛异常
    ---------------------
    可以用这个action,只不过你方法应该重写吧?如果你一个action里面只有一个业务的话,用默认的execute()方法就可以了,但是如果有多个业务的话,每个业务都要对应一个方法来处理
      

  3.   

    可以写在一个类中。一般validate方法不自行实现。要验证也是前台验证。如果验证 ID 可以用Ajax的异步通信。
    只传一个ID 一般逻辑正确的话 是不会抛异常的。
      

  4.   

    在action里面定义不同的方法,你用哪个方法在struts-xml文件里调用去找就可以了,一个action类可以做很多事情
      

  5.   

    一个action类可以做增删改查,action类里面可以有很多个方法的,不是只能有一个方法,execute()可以放共通的东西
      

  6.   

    恩 谢谢 我也知道一个action 可以做很多事情,但我发现即使用了动态方法 就是我用哪个逻辑就去调用相应的方法但这个action类的本身 的setter方法也会先执行这样参数如果传的不够在后台就会抛出异常
      

  7.   

    谢谢各位,我知道一个action类可以放多个方法,也知道可以动态调用,但这个action中有setter方法不管哪个方法执行这个setter都会先执行对吧,这样当参数少于setter时会抛异常这个有相应的方法处理么?
      

  8.   

    谢谢各位,我知道一个action类可以放多个方法,也知道可以动态调用,但这个action中有setter方法不管哪个方法执行这个setter都会先执行对吧,这样当参数少于setter时会抛异常这个有相应的方法处理么?
      

  9.   

    可以使用约束匹配的方法,匹配ACTION和匹配方法都可以,一个ACTION可以有多个功能(即多个函数),返回不同的JSP页面
      

  10.   

    参数太多的话  不用管  只管你用到的参数就OK了(不会抛异常)
    一个action可以只很多事情  只需在前台指定对应的方法就行了  比如 test/index!validateUser.action
      

  11.   

    这种方式我用过恩可以的,不过在使用ajax技术时会不执行,这个就不知道具体是怎么回事了。
      

  12.   

    还有点问题就是我的bean转换时会有异常抛出但不影响程序运行,事情是这样的我有个menu类
    public Menu{
      int id;
      int pid;
      String name;
      setter..
      getter...}
    然后我在action 类中
    pulic MenuAction extends ActionSupport{
        Menu menu = new Menu();
        setter..
        getter...
    }表单中的
    <s:textfield name="menu.name">
    <s:textfield name="menu.pid">这个表单在提交的时候如果menu.id这里不输入值会抛pid赋值异常,但最终值会赋成0 我也想要0这个状态 我想表达的意思是我能不能有办法不让它抛这个赋值异常啊,有的时候这个pid就是0不需要赋值的。