struts2用validate方法怎么显示不出错误来啊?
发布网友
发布时间:2022-04-24 00:51
我来回答
共7个回答
热心网友
时间:2022-04-24 02:20
validate方法对数据进行验证需要配置参数名映射的,如果无法映射则不能显示错误提示。
比如举例来说:
(1)、前台页面
<s:form action="login" method="post">
<s:textfeild name="username" label="username"/>
</s:form>
(2)、login.action页面
class Login extends ActionSupport{
private String username;
//username的set(),get()方法
//execute()方法
public String validate(){
if("".equals(this.getUsername()) || null == this.getUsername()){
this.addFieldErro("username","username can't null");//参数1是前台组件名称,后面是提示。此错误信息会在此组件的前面显示这句话
}
}
}
一定要注意username会映射到lable字段的,两个必须配置
热心网友
时间:2022-04-24 03:38
不是说<s:form>标签默认validate=true吗?
即使显示声明验证属性为true也不显示错误信息。
看了一篇文章用<s:fielderror/>标签显示错误信息,结果真的显示出来了,说明我后台写法没错啊。难道必须显示调用,不过格式有点奇怪,不应该是这样的吧!
但默认死*作用
热心网友
时间:2022-04-24 05:13
你在validateLogin()里面写一句system.out.println(user.getUsername);看看是否为空,之所以能在处理action类前执行这个方法是因为有*的缘故,所以这个方法应该是在执行Action类之前就已经执行了,你还应该查一下,你在struts.xml中是否配置了这个*.。
热心网友
时间:2022-04-24 07:04
你 <result name="input" type="redirect">/index/indexAction</result>
这里是重定向啊,当然没有了 type="redirect" 去掉追问我这个是跳到另一个action,老师说过,只能用 type="redirect"这种方式跳转,我知道如果跳转jsp的话就不要 type="redirect",其它的我也试过,不行,请问还有更好的方法吗?
追答那你为什么不问你们老师呢,我说过,如果验证不通过,他就会返回input,你redirect 是重新定向,怎么可能会得到adderror中的信息,再说了,你学习也太不认真了,type="redirect“ 那你的/index/indexAction 中的indexAction也要indexActon.action这样写啊,脑袋要灵活,让你把type去掉,验证这样没问题,如果是其他的可以像你们老师那样说的去做,还有一种方法就是把type改成chain
热心网友
时间:2022-04-24 09:12
配置是正确的啊?应该没问题的啊?
主要是你在action中对错误业务或逻辑的处理了?validate里面要调用一个方法的吧?
祝你好运
热心网友
时间:2022-04-24 11:37
个人观点:
要在action中实现字段验证,必须实现validateable接口(继承ActionSupport接口亦可以),实现validate方法,而你的是validateLogin方法,你可以改改试试追问恩,我继承了ActionSuport类,validateLogin()这个方法是验证login()的,这样写是一种规定呀,就不用validate()验证全部方法了了。后来问老师,老师说是struts跳转那的问题,用了type="redirect"就是客户端跳转,错误信息带不过去,就想解决这个问题,求指教,谢谢
热心网友
时间:2022-04-24 14:18
童鞋呀,你觉得validate()方法麻烦不麻烦。。。用ajax + jquery + json 去验证很方便的。。而且ajax的用户体验指数高。。