liferay集成jQuery Validation Engine 表单验证及ajax的运用

本文主要是介绍liferay集成jQuery Validation Engine 表单验证及ajax的运用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

jQuery Validation Engine是一款基于Jquery的js表单验证插件。相对于之前的传统表单验证工具,其优点是自定义验证内容更广泛以及与AJAX的方便整合。适用于日常的 E-mail、电话号码、网址等验证等及 Ajax 验证,除自身拥有丰富的验证规则外,还可以添加自定义的验证规则。兼容 IE 6+, Chrome,Firefox,,Safari, Opera 10+

个人感觉这样的效果还是比较优雅的,下面主要讲解一下在liferay中如何集成及ajax的运用。


     先看一下效果图

1.到github上下载它的最新版本,地址:https://github.com/posabsolute/jQuery-Validation-Engine

2.由于在liferay中可采用

    <portlet:resourceURL></portlet:resourceURL>

      标签发送ajax请求,为了方便,故将jquery.validationEngine-cn.js修改jquery.validationEngine-cn.jsp,  文件,具体操作是,在jsp页面头部添加

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%><script type="text/javascript">//这里放那些js函数,即jquery.validationEngine-cn.js里的function函数</script>

保存,然后放到和表单页面同一目录文件夹下。

3.在表单页面引入以下文件,首先利用request获取上下文

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>  
<!--可以根据自己的存放路径做修改,我是把该文件放在了/html/user/目录下-->  
<%@ include file="/html/user/validationEngine-cn.jsp"%>  
<!--获取上下文-->
<%  String rootPath = request.getContextPath();  
%>  
<link rel="stylesheet" href="<%=rootPath%>/css/formValidator/validationEngine.jquery.css" type="text/css"/>  
<script type="text/javascript" src="<%=rootPath%>/js/jquery.1.8.1.js">
<script type="text/javascript" src=<%=rootPath%>/js/formValidator/jquery.validationEngine.js">
<!--下面就是要验证的表单,只做功能演示,故没设置表格样式-->
<portlet:actionURL var="add" name="addUser"/>
<form action="${add}" name="userForm" id="userForm" method="post"><table> <tr>  <td> <span>屏幕显示名称:</span>  </td>  <td> <!--validator Engine的验证规则可参考官方文档,这里主要针对liferay下ajax的验证--> <!--添加class,各种验证与,分割,ajax[ajaxScreenNameCall]]就是一个ajax验证,调用了validationEngine-cn.jsp的ajaxScreenNameCall对象,该对象的名字可以随便,只要规则符合文档要求即可,这里需要注意,给input标签添加name和id属性,并保持值的一致性,发送ajax时会传递三个参数,具体是哪三个参数会在接下来讲-->  <input type="text" name="screenName" id="screenName"class="validate[required,custom[onlyLetterSp],maxSize[200],ajax[ajaxScreenNameCall]]" />    </td> </tr> </table>
<!--进行验证的设置,可参考官方文档,这里只采用了简单的设置,失去焦点的时候会验证,提交表单的时候也会验证--><br>  
<script type="text/javascript"> jQuery(document).ready(function(){jQuery("#userAccountForm").validationEngine(); });  
4.接下来我们打开validationEngine-cn.jsp页面,找到ajaxScreenNameCall对象,这个是我自己定义的,可以模仿其他的ajax对象定义即可,这里还有一个知识点,在liferay环境下如何发送ajax?这个可以参考冷月的博客 http://www.huqiwen.com/2012/10/21/liferay-6-1-development-study-10-use-ajax

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  <%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet"%>  <!--发送ajax请求,默认是失去焦点的时候开始发送ajax请求,后台更具ajax的id(在这里ajax的id为checkScreenName)判断,执行不同的逻辑-->  
<!--提交ajax请求的时候会发送三个参数到后台,即fieldId,fieldValue,extraData,其中fieldId是input标签的id,fieldValue是input文本框输入的值,  
exreaData是额外的参数  
-->  
<portlet:resourceURL var="screenAjaxUrl">  <portlet:param name="p_p_resource_id" value="checkScreenName"/>  
</portlet:resourceURL>  <script type="text/javascript">  //这里放那些js函数,即jquery.validationEngine-cn.js的函数,各个属性的作用已经很明显了,不在做说明  "ajaxScreenNameCall" : {  "url" : "<%=screenAjaxUrl%>",  // you may want to pass extra data on the ajax call  "extraData": "name=eric",  "alertText" : "* 该屏幕显示名称被占用,请重新输入!",  "alertTextLoad" : "* 验证中, 请稍等...",  "alertTextOk" : "* 恭喜,该屏幕显示名称可用!"  },  
</script>  

5.接下来在后台可以接收ajax发送过来的数据了 
@Override  
public void serveResource(ResourceRequest resourceRequest,ResourceResponse resourceResponse) throws IOException,PortletException {  //resourceId是ajax的id  String resourceId = resourceRequest.getResourceID();  if(resourceId.equals("checkScreenName")){  PrintWriter out = resourceResponse.getWriter();  //screenName就是input输入文本框的id  String screenName = ParamUtil.getString(resourceRequest, "fieldId");  //screenNameValue就是输入文本框的值  String screenNameValue = ParamUtil.getString(resourceRequest,"fieldValue");  /*接下来就是查询数据库,判断,把值out出去,如何在jsp页面提示验证成功与否呢?  只要设置screeName的值为true或者false并按特定格式返回即可,json格式如下:  ["screenName","true"]这个是提示成功的json格式  ["screenName","false"]这个是提示失败的json格式  可能我用的版本有点老,返回非空提示成功,返回空提示失败,即  ["screenName","true"]提示成功      ["screenName",""]提示失败  这种格式的json很好拼接,这里给出一种用数组拼接的方式*/  //1.根据screenNameValue查询数据库boolean result = xxxxLocalServiceUtil.getxxxx(screenNameValue);  //2.判断是否存在,并返回json数据Gson gson = new Gson();  //google提供的转换出json格式的类String[] screenValidators = new String[2];  if(result) {  screenValidators[0] = "screenName";     screenValidators[1] = "";//表示屏幕显示名称占用,在新版本中应该用screenValidators[1] = "false"  }else {   screenValidators[0] = "screenName";  screenValidators[1] = "true";//表示屏幕显示名称可用  }  String str = gson.toJson(screenValidators);  out.print(str);  out.flush();  out.close();  super.serveResource(resourceRequest, resourceResponse);  
}  
6.经过以上几步,当输入文本框失去焦点时,就能进行ajax的验证。


这篇关于liferay集成jQuery Validation Engine 表单验证及ajax的运用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134828

相关文章

OpenCV在Java中的完整集成指南分享

《OpenCV在Java中的完整集成指南分享》本文详解了在Java中集成OpenCV的方法,涵盖jar包导入、dll配置、JNI路径设置及跨平台兼容性处理,提供了图像处理、特征检测、实时视频分析等应用... 目录1. OpenCV简介与应用领域1.1 OpenCV的诞生与发展1.2 OpenCV的应用领域2

SpringBoot集成MyBatis实现SQL拦截器的实战指南

《SpringBoot集成MyBatis实现SQL拦截器的实战指南》这篇文章主要为大家详细介绍了SpringBoot集成MyBatis实现SQL拦截器的相关知识,文中的示例代码讲解详细,有需要的小伙伴... 目录一、为什么需要SQL拦截器?二、MyBATis拦截器基础2.1 核心接口:Interceptor

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

SpringBoot集成EasyPoi实现Excel模板导出成PDF文件

《SpringBoot集成EasyPoi实现Excel模板导出成PDF文件》在日常工作中,我们经常需要将数据导出成Excel表格或PDF文件,本文将介绍如何在SpringBoot项目中集成EasyPo... 目录前言摘要简介源代码解析应用场景案例优缺点分析类代码方法介绍测试用例小结前言在日常工作中,我们经

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

MySQL 主从复制部署及验证(示例详解)

《MySQL主从复制部署及验证(示例详解)》本文介绍MySQL主从复制部署步骤及学校管理数据库创建脚本,包含表结构设计、示例数据插入和查询语句,用于验证主从同步功能,感兴趣的朋友一起看看吧... 目录mysql 主从复制部署指南部署步骤1.环境准备2. 主服务器配置3. 创建复制用户4. 获取主服务器状态5

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr