struts中no result define for ×××Action

来源:互联网 发布:excel2010 数据分析 编辑:程序博客网 时间:2024/05/22 03:28

今天做项目的时候遇到了一个问题, 一直在报错:No result defined for action, 本来以为是配置文件中没有对应的result导致的, 后来查了, 发现配置文件和action都没有问题, 但是就是一直报错, 连action中的方法都进不去, 

原来:Action中的属性值为空的时候,Struts2的默认拦截器会报错,但是又找不到input的Result,不能够把错误返回,所以报这种错误。

解决方法:

 当你在用struts2开发时,如果,从页面跳入action时,页面报No result defined for action and result时,大部分的原因有以下几种:

1、validate方法没有通过;

2、页面元素中有重命名时,但后台action类的对应的接收此同名参数的是变量而没有写成数组


要检查这种错误时,可以
1,在后台action类中重写ActionSupport中的
void addActionError(String anErrorMessage)
void addActionMessage(String aMessage)
void addFieldError(String fieldName, String errorMessage)
这三个方法,在并在其实现代码中设置断点,监控传入的参数,并可获知页面的相关报错具体原因.
2,在页面中加入以下标签,将错误显示出来 :

< div style =”color:red” >
    < s:fielderror />
</ div >

  public void addActionError(String anErrorMessage){
   String s=anErrorMessage;
   System.out.println(s);
  }
  public void addActionMessage(String aMessage){
   String s=aMessage;
   System.out.println(s);
  
  }
  public void addFieldError(String fieldName, String errorMessage){
   String s=errorMessage;
   String f=fieldName;
   System.out.println(s);
   System.out.println(f);
  
  }

果然, 在加入上面三个方法后, 控制台打印出了 : Invalid value for field userId.  原来是前台传过来的userId有问题


感谢 http://www.blogjava.net/javagrass/archive/2011/07/20/354684.html 作者

0 0
原创粉丝点击