struts2 ajax验证用户名是否存在

做注之前曾经写过一个使用struts2的ajax标签动态验证用户名是否存在的例子。这回做注册页面找来使用,发现有一点缺陷。当ajax标签进行异步请求时,会提交当前表单。而当前表单使用了JavaScript进行了用户名是否为空等的验证,直接异步提交表单进行验证用户名时可能会因为JavaScript阻止而无法提交导致动态验证失败。


改进的方法:另外建立一个表单,里边放一个隐藏文本域。通过JavaScript方法及onChange事件同步用户名文本框和隐藏文本域的值。然后对用户名文本框onBlur事件进行异步提交那个表单,并将返回的html代码显示在指定的位置上。

下边是涉及的html代码部分
  1. <scripttype="text/javascript">
  2. //将id1的值赋给id2对象
  3. functioncopyValue(id1,id2){
  4. getObj(id2).value=getObj(id1).value;
  5. }
  6. </script>
  7. <!--为异步提交定义需要的url-->
  8. <s:urlid="userUrl"action="regist"method="checkUser"/>
  9. <!--定于需要的表单-->
  10. <formid="form">
  11. <inputtype="hidden"name="id"id="idCopy">
  12. </form>
  13. <!--看官方文档吧,懒得解释了-->
  14. <sx:bindtargets="idInfo"formId="form"sources="id"href="%{userUrl}"events="onblur"indicator="indicator"/>
  15. <s:textfieldid="id"name="id"maxlength="10"theme="simple"onchange="copyValue('id','idCopy')"/>
  16. <!--这个是指示器,当请求未完成时显示这个图片-->
  17. <imgid="indicator"src="image/indicator.gif"style="display:none;vertical-align:middle;"/>
  18. <!--这个是显示信息的目标-->
  19. <spanid="idInfo">请输入你要注册的用户名</span>

然后是action,这回采用直接把代码写入stream的方式。
  1. publicStringcheckUser(){
  2. Stringinfo;
  3. if(getUserDao().get(getId())!=null){
  4. info="<imgsrc='image/error.gif'style='vertical-align:middle;'/>";
  5. }
  6. else{
  7. info="<imgsrc='image/ok.gif'style='vertical-align:middle;'/>";
  8. }
  9. setInputStream(newStringBufferInputStream(info));
  10. return"check";
  11. }

然后是对应的action的配置
  1. <actionname="regist"class="regist">
  2. <resultname="check"type="stream"></result>
  3. </action>

每次当用户名文本框失去焦点时,旁边就会显示用户是否已被注册的信息


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值