当前位置:  编程技术>WEB前端
本页文章导读:
    ▪jquery多选项卡效果      这个选项卡不是一个单独的选项卡,而是多个选项卡,每个选项卡里面有多个选项,而且选项的个数也不一样。废话不多说,直接上jquery代码。<script type="text/javascript"> $(function() { .........
    ▪一口一口吃掉Struts(六)——动态ActionForm        使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便。 但是,ActionForm也存在一些明显的不足: 1、如果ActionForm对应的HTML表.........
    ▪JQueryEasyUI validatebox 扩展其自带验证方法      JQueryEasyUI validatebox自带了几种自带的验证方法,比如非空、邮箱、异步、字符长短等验证方式,但是这些远远满足不了我们自己的使用,先整理了一些扩展方法,使其验证方式更为丰富! 1 $..........

[1]jquery多选项卡效果
    来源:    发布时间: 2013-11-15

这个选项卡不是一个单独的选项卡,而是多个选项卡,每个选项卡里面有多个选项,而且选项的个数也不一样。废话不多说,直接上jquery代码。

<script type="text/javascript">
$(function() {
$(".designerspanel").each(function(){
$(this).find(".tabspanel #show:not(:first)").hide();
});

$(".designerspanel li").click(function(){
idname=$(this).parents('.designerspanel').attr('id');
current=$("#"+idname+" li:eq(0)").attr('class');
current=current.replace("black","");
$("#"+idname+" li").addClass("black");
$(this).removeClass("black").addClass(current);
$("#"+idname+" #show").hide();
$("#"+idname+" #show").eq($("#"+idname+" li").index(this)).show();
}).css("cursor", "pointer");
})
</script>

附上html代码

<div id="AG">
<a name="AG"></a>
<div >Designer Name Order A to G</div>
<div >
<ul>
<li ><span>Designer Name A</span></li>
<li ><span>Designer Name B</span></li>
<li ><span>Designer Name C</span></li>
<li ><span>Designer Name D</span></li>
<li ><span>Designer Name E</span></li>
<li ><span>Designer Name F</span></li>
<li ><span>Designer Name G</span></li>
</ul>
<div id="show">
<div >
<div ></div>
<div >
<!--{foreach from=$A item=i}-->
<a href="#">{$i.user_name}</a>
<!--{/foreach}-->
</div>
<div ></div>
</div>
<div ></div>
<div &
    
[2]一口一口吃掉Struts(六)——动态ActionForm
    来源: 互联网  发布时间: 2013-11-15

 

使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便。

但是,ActionForm也存在一些明显的不足:

1、如果ActionForm对应的HTML表单添加或删除一些属性,ActionForm类就可能需要修改并重新编译;所以如果HTML表单是动态的,那么ActionForm就无能为力了;

2、ActionForm增加了项目中类的数量!

3、对于安全性要求不高的系统,ActionForm的数据验证并不常用,我们一般都在js中验证了

面对这些缺点,Struts引入了动态actionform概念,动态ActionForm使得用户无须为应用程序的每一个HTML表单创建具体的ActionForm类。Struts框架包中的DyanActionForm类及其子类实现了动态ActionForm.

 

还是边看实例边说吧!

 

JSP

<%@ page language="java" contentType="text/html; charset=GB18030"
	pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
		<title>Insert title here</title>
	</head>
	<body>
		<h1>
			测试动态ActionForm
		</h1>
		<form action="TestAction.do" method="post">
			username:
			<input type="text" name="name" />
			<br />
			age:
			<input type="text" name="age" />
			<br />
			<input type="submit" value="提交" />
		</form>
	</body>
</html>


配置文件

DyanActionForm类扩展了 ActionForm类。动态ActionForm支持在Struts配置文件中完成ActionForm的全部配置,无须编写任何额外的JAVA代码。使用动态 form, 没有对应的类,所以,如果需要扩展属性,只需要再次配置文件中添加一个属性就可以了

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
          "http://jakarta.apache.org/struts/dtds/struts-config_1_2.dtd">

<struts-config>
	<form-beans>
		<form-bean name="dynamicForm" type="org.apache.struts.action.DynaActionForm">
			<form-property name="name" type="java.lang.String" />
			<form-property name="age" type="java.lang.Integer" />
		</form-bean>
	</form-beans>
	<action-mappings>
		<action path="/TestAction" type="com.jialin.TestAction" name="dynamicForm"
			scope="request">
			<forward name="showResult" path="/ShowResult.jsp" />
		</action>
	</action-mappings>
</struts-config>

 

那么,在这个 action 里面,如何实现对动态 form 的调用 ? 同普通的ActionForm一样,Action类和JSP都可以访问动态ActionForm,而访问方式也基本一致。访问动态ActionForm与访问普通的ActionForm的最大区别在于对属性的访问方式不同。

我们传递的是 DynaActionForm, 所以,在调用的时候,我们就要把 form 强制转换成 DynaActionForm 对象。

在标准的ActionForm中,针对每一个属性都提供了getter和setter方法来读取和设置属性,而DynaActionForm把所有的属性保存在一个Map 对象中,因此访问DyanActionForm中的属性与访问Map对象中的方法类似。

 

Action

package com.jialin;


import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;

public class TestAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		DynaActionForm daf=(DynaActionForm)form;
		String name=daf.getString("name");
		Integer age = (Integer)daf.get("age");
		System.out.println("name=" + name);
		System.out.println("age=" + age);
		
		return mapping.findForward("showResult");
	}
	
}

动态ActionForm的表单验证问题。DynaActionForm类的validate()方法没有提供任何默认的验证行为。可以通过定义扩展DynaActionForm类的子类,然后覆盖validate()方法,但是以编程方式来验证动态ActionForm并不是一种理想的办法。动态ActionForm的验证应该使用Struts的Validator验证插件。Validator插件允许采用特定的配置文件为动态的ActionForm配置验证规则,如检查必须的输入域,日期时间等。但这些验证我们一般都在客户端js中完成。

 

动态Action同样有它的缺点:

1、配置文件会增加,非常容易写错,而且错误不易发现。今天测试的时候,我就是把java.lang.String 写成了java.long.String 在Action中拿到的form就是null,找了老半天才解决。所以采用动态action调试比较麻烦。

2、静态ActionForm能让我们很清晰的了解表单数据信息,数据和对数据的操作是分离的,更容易让人理解。

 

呵呵,有利就有弊,平衡就好。

 

下篇继续……

 

 

 

 


 

 

 

作者:shan9liang 发表于2013-3-23 19:35:01 原文链接
阅读:49 评论:0 查看评论

    
[3]JQueryEasyUI validatebox 扩展其自带验证方法
    来源:    发布时间: 2013-11-15

JQueryEasyUI validatebox自带了几种自带的验证方法,比如非空、邮箱、异步、字符长短等验证方式,但是这些远远满足不了我们自己的使用,先整理了一些扩展方法,使其验证方式更为丰富!

1 $.extend($.fn.validatebox.defaults.rules,{
2 minLength:{// 判断最小长度
3 validator:function(value,param) {
4 returnvalue.length>=param[0];
5 },
6 message:'最少输入 {0} 个字符。'
7 },
8 length:{validator:function(value,param){
9 varlen=$.trim(value).length;
10 returnlen>=param[0]&&len<=param[1];
11 },
12 message:"输入内容长度必须介于{0}和{1}之间."
13 },
14 phone:{// 验证电话号码
15 validator:function(value) {
16 return/^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);
17 },
18 message:'格式不正确,请使用下面格式:020-88888888'
19 },
20 mobile:{// 验证手机号码
21 validator:function(value) {
22 return/^(13|15|18)\d{9}$/i.test(value);
23 },
24 message:'手机号码格式不正确'
25 },
26 idcard:{// 验证身份证
27 validator:function(value) {
28 return/^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value);
29 },
30 message:'身份证号码格式不正确'
31 },
32 intOrFloat:{// 验证整数或小数
33 validator:function(value) {
34 return/^\d+(\.\d+)?$/i.test(value);
35 },
36 message:'请输入数字,并确保格式正确'
37 },
38 currency:{// 验证货币
39 validator:function(value) {
40 return/^\d+(\.\d+)?$/i.test(value);
41 },
42 message:'货币格式不正确'
43 },
44 qq:{// 验证QQ,从10000开始
45 validator:function(value) {
46 return/^[1-9]\d{4,9}$/i.test(value);
47 },
48 message:'QQ号码格式不正确'
49 },
50 integer:{// 验证整数
51 validator:function(value) {
52 return/^[+]?[1-9]+\d*$/i.test(value);
53 },
54 message:'请输入整数'
55 },
56 chinese:{// 验证中文
57 validator:function(value) {
58 return/^[\u0391-\uFFE5]+$/i.test(value);
59 },
60 message:'请输入中文'
61 },
62 english:{// 验证英语
63 validator:function(value) {
64 return/^[A-Za-z]+$/i.test(value);
65 },
66 message:'请输入英文'
67 },
68 unnormal:{// 验证是否包含空格和非法字符
69 validator:function(value) {
70 return/.+/i.test(value);
71 },
72 message:'输入值不能为空和包含其他非法字符'
73 },
74 username:{// 验证用户名
75 validator:function(value) {
76 return/^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);
77 },
78 message:'用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)'
79 },
80 faxno:{// 验证传真
81 vali
    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3