`
wangrl
  • 浏览: 154447 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Struts2+jquery.validate框架实现影片编码是否存在

阅读更多
在项目中的注册页面需要判断影片编码是否存在,采用了jquery的验证框架的remote方法来实现。

1、js脚本:
$(document).ready(function(){
    $("#myForm").validate({      
        rules:{ 
            "mediaInfo.mediacode":{ 
                required:true, 
                remote:"media!validateMediacode.action" //验证影片编码是否存在的Action 
            } 
       }, 
       messages: { 
            "mediaInfo.mediacode":{ 
                required:"请输入影片编码",
                remote:"该影片编码已被注册" //当后台返回false时,不许注册 
            } 
      } 
     });
}) ;

2、java代码:
     由于jquery的remote方法只允许返回true或者false,当返回false时,输出messages的内容:"该影片编码已经注册"。在Struts2的有两种方法可以实现:
     (1)、利用HttpServletResponse对象的response实例,Java代码如下:
public String validateMediacode() throws Exception{
	HttpServletRequest sRequst= ServletActionContext.getRequest();
	sRequst.setCharacterEncoding("UTF-8");
	HttpServletResponse response = ServletActionContext.getResponse();
        response.setContentType("text/plain;charset=UTF-8");
	String meidacode = sRequst.getParameter("mediaInfo.mediacode"); 
	
	if(null != meidacode && "wangwang".equals(meidacode)){
		//影片编码已经存在,不许注册
		response.getWriter().write("false");
	} else {
		//允许注册
		response.getWriter().write("true");
	}
	return null;
}

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

引用

由于remote规则只允许后台返回true或false,因此struts2的action得不同于一般的action,不能返回一个字符串,然后dispatch一个视图之类的。研究之后,发现struts2中有一种result类型:stream,通过该类型可以实现返回true或false。action代码如下

struts.xml配置:
<package name="media" extends="struts-default">  
        <action name="media" class="mediaAction">  
            <result type="stream">  
                <param name="contentType">text/plain</param><!-- 默认为text/plain -->  
                <param name="inputName">inputStream</param><!-- 默认就为inputStream -->  
            </result>  
        </action>  
    </package>

以上的contentType不能使用text/html类型,也可以不用配置该项,默认就是text/plain类型。
分享到:
评论

相关推荐

    java面试题

    Struts的validate框架是如何验证的? 74 72.11. dispatchAction是用什么技术实现的? 74 72.12. struts2.0的mvc模式?与struts1.0的区别? 74 72.13. struts1.2和struts2.0的区别?如何控制两种框架中的单例模式? ...

    Java个人简历模板37.doc

    - **框架技能**:熟练掌握Struts2、Hibernate和Spring框架,包括其高级特性,如拦截器、结果集、缓存策略等。 - **数据库技能**:熟悉Oracle和MySQL数据库,了解PL/SQL开发和MySQL优化。 - **其他技能**:熟悉...

    Java学习笔记-个人整理的

    {12.11.2}intersect与minus}{166}{subsection.12.11.2} {12.11.3}join}{166}{subsection.12.11.3} {12.11.3.1}cross join}{166}{subsubsection.12.11.3.1} {12.11.3.2}inner join}{167}{subsubsection.12.11.3.2...

    Java个人简历模板7.doc

    3. **脚本技能**:掌握JavaScript编程,精通jQuery框架和AJAX,能熟练使用zTree、validate、jQuery UI等jQuery插件。 4. **框架技能**:对Struts 2有深入理解,包括其高级特性,如拦截器、结果集、值栈、OGNL、表单...

    dangdang和smartstruts2.rar

    Struts2、JDBC+连接池(dbcp)、jQuery+Ajax、javamail、log4j、junit、MySQL 系统架构: 表现层:jQuery+Ajax、Struts2标签+OGNL 控制层:Struts2控制器,Action组件 业务层:JavaBean组件、javamail 数据访问层...

    姓名_javaEE软件工程师_2年_模板(49).doc

    在框架技术方面,他熟悉Struts2、Hibernate和Spring,包括Struts2的拦截器、结果集、值栈、OGNL、表单验证和SSH整合,Hibernate的一对多和多对多映射、延迟加载和数据缓存,以及Spring的IOC、DI、AOP和事务处理。...

    Java个人简历模板11.doc

    在框架技能上,张三熟悉Struts 2框架,能够利用其高级特性,如拦截器、结果集、值栈、OGNL、表单验证和Struts2与AJAX的集成。同时,他在Hibernate框架的使用上也有丰富的经验,包括一对多和多对多的关系映射、延迟...

    java面试宝典

    103、Struts的validate框架是如何验证的? 24 104、说下Struts的设计模式 24 105、spring工作机制及为什么要用? 24 106、HttpSession session = request.getSession() 24 107、getParameter与 getAttribute的区别? ...

Global site tag (gtag.js) - Google Analytics