struts2用validate方法怎么显示不出错误来啊?
struts配置没问题,但是就是输错了用户名或密码都不显示出来错误信息,搞了半天,不知道为什么????求解action里:publicStringlogin(){Serv...
struts配置没问题,但是就是 输错了用户名或密码都不显示出来错误信息,搞了半天,不知道为什么????求解
action里:
public String login(){
ServletActionContext.getRequest().getSession().setAttribute("currenUser", user);
return SUCCESS;
}
public void validateLogin() {
if(user.getUsername() == null || "".equals(user.getUsername().trim())){
this.addFieldError("user.username", "用户名不能为空");
}
if(user.getPassword() == null || "".equals(user.getPassword().trim())){
this.addFieldError("user.password", "密码不能为空");
}
User u = userService.get(user.getUsername().trim(), user.getPassword().trim());
System.out.println(u == null);
if(u != null){
user = u;
}else{
this.addFieldError("user.username", "该 用户不存在");
}
}
struts.xml里:
<package name="index" namespace="/index" extends="struts-default">
<action name="login" class="indexAction" method="login">
<result type="redirect">/myIndex/myBlog</result>
<result name="input" type="redirect">/index/indexAction</result>
</action></package> 展开
action里:
public String login(){
ServletActionContext.getRequest().getSession().setAttribute("currenUser", user);
return SUCCESS;
}
public void validateLogin() {
if(user.getUsername() == null || "".equals(user.getUsername().trim())){
this.addFieldError("user.username", "用户名不能为空");
}
if(user.getPassword() == null || "".equals(user.getPassword().trim())){
this.addFieldError("user.password", "密码不能为空");
}
User u = userService.get(user.getUsername().trim(), user.getPassword().trim());
System.out.println(u == null);
if(u != null){
user = u;
}else{
this.addFieldError("user.username", "该 用户不存在");
}
}
struts.xml里:
<package name="index" namespace="/index" extends="struts-default">
<action name="login" class="indexAction" method="login">
<result type="redirect">/myIndex/myBlog</result>
<result name="input" type="redirect">/index/indexAction</result>
</action></package> 展开
7个回答
2015-12-13 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
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字段的,两个必须配置
比如举例来说:
(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字段的,两个必须配置
展开全部
不是说<s:form>标签默认validate=true吗?
即使显示声明验证属性为true也不显示错误信息。
看了一篇文章用<s:fielderror/>标签显示错误信息,结果真的显示出来了,说明我后台写法没错啊。难道必须显示调用,不过格式有点奇怪,不应该是这样的吧!
但默认死活不起作用
即使显示声明验证属性为true也不显示错误信息。
看了一篇文章用<s:fielderror/>标签显示错误信息,结果真的显示出来了,说明我后台写法没错啊。难道必须显示调用,不过格式有点奇怪,不应该是这样的吧!
但默认死活不起作用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你在validateLogin()里面写一句system.out.println(user.getUsername);看看是否为空,之所以能在处理action类前执行这个方法是因为有拦截器的缘故,所以这个方法应该是在执行Action类之前就已经执行了,你还应该查一下,你在struts.xml中是否配置了这个拦截器.。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你 <result name="input" type="redirect">/index/indexAction</result>
这里是重定向啊,当然没有了 type="redirect" 去掉
这里是重定向啊,当然没有了 type="redirect" 去掉
追问
我这个是跳到另一个action,老师说过,只能用 type="redirect"这种方式跳转,我知道如果跳转jsp的话就不要 type="redirect",其它的我也试过,不行,请问还有更好的方法吗?
追答
那你为什么不问你们老师呢,我说过,如果验证不通过,他就会返回input,你redirect 是重新定向,怎么可能会得到adderror中的信息,再说了,你学习也太不认真了,type="redirect“ 那你的/index/indexAction 中的indexAction也要indexActon.action这样写啊,脑袋要灵活,让你把type去掉,验证这样没问题,如果是其他的可以像你们老师那样说的去做,还有一种方法就是把type改成chain
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
配置是正确的啊?应该没问题的啊?
主要是你在action中对错误业务或逻辑的处理了?validate里面要调用一个方法的吧?
祝你好运
主要是你在action中对错误业务或逻辑的处理了?validate里面要调用一个方法的吧?
祝你好运
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询