在学习Struts2时,遇到了“No result defined for ...” 错误。除了大小写,编程等错误外,最常见的一种解决方法是在package里面加上namespace="/"一句。
不过我发现其实还有人即使解决了上述所有问题,还是会出现错误,可能是在ActionSupport类。
当然这是个很初级的问题。不过就我这种初学者,还是得写下来。
未继承ActionSupport时,我用的是这样:
public String execute() throws Exception { return "success"; }在做类型转换时,Console报错,但是仍然可以显示,因为是warning,提示日期型转换失败。我没在意
随后加上ActionSupport,其他相关步骤配置完毕,再次运行,便出错“No result defined for ...”
(之所以我知道是ActionSupport的问题,是我一点点试出来的。)
那这个错误一定和ActionSupport相关,但是到底问题出在哪里呢?后来知道:
继承 ActionSupport 类会校验数据,如果转换出错,系统会找你要INPUT视图,如果没配置就出“No result defined”的错误。
如果没有继承 ActionSupport 的话,页面该显示的还是会显示,只是控制台会报找不到相应的set方法去响应请求参数值。
那解决方法有两个
一是在代码里加上INPUT相关代码,捕捉错误信息将错误显示在对应error(或自定义)页面上;
二是不要继承ActionSupport类。
显然第二种方法治标不治本,我还是要选择继承ActionSupport类。那问题估计出在其他方面。
我觉得我输入的类型应该是可以从页面输入的字符型自动转换成日期型的。
我输入的是1999-10-10,报错。奇怪。。。
原因后来发现了,我用的是英文操作系统,日期型在我的系统里设置的月/日/年格式。那么我输入上述格式自然是不能转换成功的。
所以我在输入框里输入10/7/2011(输入10-7-2011也是不行的,严格按照自己系统里设定的日期型才能转换成功)
成功。
虽然这个程序很简陋,不过多少也暴露了一些相关的问题。
以上是在学习圣思园“中国人民银行企培视频 第17讲 Struts2.1类型转换”视频中遇到的问题。希望能对其他人也有参考价值。