No result defined for action cn.edu.zjut.action.UserAction and result input错误解决
No result defined for action cn.edu.zjut.action.UserAction and result input错误解决
在学习Struts2的内置类型转换器和校验器的时候,出现了以下错误:
register.jsp:
当生日输入合法时,不会出现问题。但是当日期输了2010-10-32这个非法日期时,报了上面的错误。
最终发现,是因为Struts2内置的类型转换器匹配到yyyy-mm-dd时会将String类型的日期自动转换成Date类型,并进行校验。如果类型不匹配,或者日期不合法(如果上面10月32日这种情况),就会报错误信息。
但是,现在并没有报日期不合法的信息,而是程序出了问题。这是因为前面提到了Struts框架对日期进行了校验。既然进行了校验,那么校验信息就要有地方输出,问题出现的原因其实就是没有配置校验结果信息输出的路径。
在struts.xml文件中补上红框内的这行代码,表示UserAction类在处理register.jsp页面时,校验信息输出到register.jsp。
添加上之后,页面正常输出,如下:
如果想添加个性化的报错信息,可以在工程的xxx.action 包中创建局部属性文件“UserAction.properties”,修改类型转换的校验信息,并使用 native2ASCII 工具将 UserAction.properties 重新编码(代码片段如下)
修改之后,输入非法的日期后提交,页面如下: