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>
展开
 我来答
千锋教育
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字段的,两个必须配置
神农虞夏
2018-10-24 · TA获得超过204个赞
知道答主
回答量:406
采纳率:44%
帮助的人:50.5万
展开全部
不是说<s:form>标签默认validate=true吗?
即使显示声明验证属性为true也不显示错误信息。
看了一篇文章用<s:fielderror/>标签显示错误信息,结果真的显示出来了,说明我后台写法没错啊。难道必须显示调用,不过格式有点奇怪,不应该是这样的吧!
但默认死活不起作用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
359882466
2012-04-29 · 超过14用户采纳过TA的回答
知道答主
回答量:50
采纳率:0%
帮助的人:19.5万
展开全部
你在validateLogin()里面写一句system.out.println(user.getUsername);看看是否为空,之所以能在处理action类前执行这个方法是因为有拦截器的缘故,所以这个方法应该是在执行Action类之前就已经执行了,你还应该查一下,你在struts.xml中是否配置了这个拦截器.。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Java_Mr
2012-04-11 · TA获得超过216个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:102万
展开全部
你 <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
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
758462480
2012-04-11
知道答主
回答量:17
采纳率:0%
帮助的人:8.1万
展开全部
配置是正确的啊?应该没问题的啊?
主要是你在action中对错误业务或逻辑的处理了?validate里面要调用一个方法的吧?
祝你好运
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式