请先看效果:
1.登录界面效果如下图1所示:首次登录验证码显示正常,如果struts2的验证函数:public void validate(){ },一但验证到有错误信息,则显示如图2所示。图二中验证码消失了。这样问题来了:用户再次登录时,就看不到验证码了,奇怪了,晕,请牛人解答。不知道为何! ->
哦。你的验证码使用Action写的,可能Struts2内部有机制,验证不通过你那个验证码Action不刷新了!建议换成Servlet实现,我做验证码一般都是Servlet实现的,这样还通用,谁要用直接赋值一份就行,但是你这个Action实现的必须对方也使用Struts才能使用你的验证码!
太不正常了啊。验证不通过,返回有result的,如果你action中定义了该result的话等于太重新加载一次页面,不应该不显示啊。
介绍很NB的方法,就是在验证码旁边加一个“刷新展示”超链,让客户点。QQ就这么做的,我有时候网速慢看不到验证码,就可以掉“看不清楚,刷新”就ok了。当然这个刷新是局部的,只刷新验证码!
没有是因为struts2内部控制了,validate验证后会按照自己的方式来返回提示信息.
想问下你的验证码是怎么显示的,检查下你引用验证码的代码.我之前也遇到过.就是代码那写有问题.
为什么Action更好呢?还有你什么都不想换的话,就使用我说的刷新,不是你的那种在验证码上单击刷新,而是在页面加一个超链接刷新,比如“单击刷新验证码”,然后使用js对单击时间做处理。
var img=document.getElementByid("checkCode");
img.src="你的Action地址";
就ok 了