`
czy_sysu
  • 浏览: 39170 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类

Struts2+jquery.validate框架实现用户名是否存在

阅读更多
在项目中的注册页面需要判断用户名是否存在,采用了jquery的验证框架的remote方法来实现。
1、js脚本:
      jQuery.validator.addMethod("usename", function(value, element) {  
        return this.optional(element) || value.length >= 4 && value.length <= 12 &&(/\d/.test(value) || /[a-z]  /i.test(value));    }, "用户名应包含4-12个数字、字母"); 
    $("form").validate({  
        rules:{
            username:{
                required:true,
                remote:"checkUserAvailable.action"//用户名是否存在的Action
            }
       },
       messages: {
            username:{
                required:"请输入用户名",
                remote:"该用户名已经被注册"//当后台返回false时显示在页面的div
            }
      }
     });
2、java代码:
     由于jquery的remote方法只允许返回true或者false,当返回false时,输出messages的内容:"该用户名已经被  注册"。在Struts2的有两种方法可以实现:
     (1)、利用HttpServletResponse对象的response实例,Java代码如下:
            String text="true";
            if(memberService.findByUsername(member.getUsername()) != null){
                 text="false";//如果用户名已存在,则输出false
            }

           HttpServletResponse response = ServletActionContext.getResponse();

           response.setContentType("text/plain;charset=UTF-8");

           response.getWriter().write(text);

           return null;


          struts.xml配置:可以不用配置<result>输出项。本方法的缺点是依赖于HttpServletResponse。
    (2)、使用Struts2的stream返回类型:
           Boolean canSign = true;
           // 数据库中是否存在该用户名
          if (memberService.findByUsername(member.getUsername()) != null) {
              canSign = false;// 表示存在,要返回false
          }
          inputStream = new ByteArrayInputStream(canSign.toString().getBytes()); //将true或者false转化为流,要为inputStream提供getter方法。
          return SUCCESS;

           struts.xml配置:

            <result type="stream">

                <param name="contentType">text/plain</param>

                <param name="inputName">inputStream</param>

           </result>

          以上的contentType不能使用text/html类型,也可以不用配置该项,默认就是text/plain类型。
分享到:
评论
2 楼 syjsky2011 2012-04-14  
如果返回true,可以显示正确的提示吗?
1 楼 gongyangguang 2011-09-24  

相关推荐

Global site tag (gtag.js) - Google Analytics