一
今天在编程的时候,我遇到了No result defined for action and result input的错误,这个错误就是说没有为返回的input定义,可是有时候我们不一定要用它,然而在Action中出错的话,默认就返回了这个input了,这时,如果我们在struts的<result>
没有定义INPUT的值的话,就出现No result defined for action and resultinput
的错误了。
似乎在struts2.1以上,struts.xml中input这一个值是默认必须定义的,如果你不定义就会出现上面的错误。
二
今天在做项目时,碰到一个问题。当我们跳转Action时,每次都只会跳转input。而不会跳到action中去执行。控制器也没有任何报错,刚开始好郁闷,一直不知道是为了什么。后来到网上查了好多资料,然后才找到原因。
这个原因主要是因为类型不匹配。比如说我们在Action中定义了一个int类型的变量var,但是我们在页面中传递过来的是一个名为var的变量,但是它的值是“ancgdgs”,这样Struts就会尝试将var转换成int类型,但是这个时候无法将这个String类型的值转换成int类型。
再比如我在项目中form里参数定义的是username,password等string类型,但是我在action中初始化的对象为一个实体student对象,这就导致了jsp传的值与action获值的不匹配,于是发生了类型不匹配的问题。
当类型不匹配的情况发生时,struts2就会执行input,返回到input指定的页面。而不去进入Action中执行。