`
newslxw
  • 浏览: 212967 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

我的struts2.0开发特点

阅读更多
1、页面获取action的返回值的方式
struts2.0的标签可以直接获取action中的属性,但是一个action中经常有很多操作函数,他们返回的属性可能不一样,导致属性冗余,而且也不是很直观的知道函数中返回那些对象,所以我一直沿用老的返回值方法,就是将返回对象放到request中,或者直接输出json字符串,页面上再使用EL来获取具体的值,可是struts的表情不支持el,所以现在只能使用#request.xxx方法获取返回值。

2、action获取页面传入的参数的方式
   我设计的action一般不存在action的属性变量,因此无法直接从action属性中获取相应的值,我采用BeanUtils类来获取我要的属性。

3、页面校验设计
   我定义了个通过的JS,他会根据各个HTML的控制中自定义的属性来校验数据,这些自定义属性包括:required(必须)、isInt(整数)、isNumeric、isEmpty、maxLen、minLen(最小长度)、equalsLen(长度)


BeanUtils代码:

public class BeanUtilsEx
{
    private static Logger logger = Logger.getLogger(BeanUtilsEx.class);
    private static BeanUtilsBean util = null;  
    static
    {
        DateConverter d = new DateConverter();
        String[] datePattern = { "yyyy-mm-dd", "yyyy/mm/dd", "yyyy.mm.dd","yyyymmdd" };
        d.setPatterns(datePattern);
        ConvertUtils.register(d, java.util.Date.class);

        // 以下几行解决当值为空时,用 null 设置对应字段的值, (但 String 类型仍然非null, 为空字符串)
        ConvertUtils.register(new IntegerConverter(null), Integer.class);
        ConvertUtils.register(new FloatConverter(null), Float.class);
        ConvertUtils.register(new DoubleConverter(null), Double.class);
        // ConvertUtils.register(new DateConverter("yyyy-MM-dd"), Date.class);
        ConvertUtils.register(new DateConverter(null), Date.class);
        ConvertUtils.register(new StringConverter(null), String.class);
        util = new BeanUtilsBean(new ConvertUtilsBean(),new PropertyUtilsBeanEx() );  
    }

    /**
     * 从 request 传递的参数集合,组装到 JavaBean 中
     * 
     * @param request
     * @param obj
     */
    @SuppressWarnings("unchecked")
    public static void populate(HttpServletRequest request, Object obj) {
        Map map = request.getParameterMap();
        try
        {
            util.populate(obj, map);
        }
        catch (IllegalAccessException e)
        {
            e.printStackTrace();
            logger.error(e);
        }
        catch (InvocationTargetException e)
        {
            e.printStackTrace();
            logger.error(e);
        }
    }

}



用例

    /**
     * 从request生成指定的BEAN对象
     * @param object bean对象
     * @return
     */
    public void request2Bean(Object object)
    {
         BeanUtilsEx.populate(this.getRequest(), object);
    }

    @Override
    public String addUser() {
        String ret=UserActionName.USERSEARCH;
        User user = new User();
        user.setEmployer(new Employer());
        request2Bean(user);
        User writer = this.getLoginUser();        
        userServ.addUser(user, writer);
        return ret;
    }    


JS代码

 	var COMJS={
 			validate:function(form)
			{
				var required_objs = $(form).find("*[required='1']");
			    for(var i=0; i<required_objs.length; i++)
			    {
			        var obj = $(required_objs.get(i));
			        var v = $.trim(obj.val());
			        var msg = obj.attr("message");
			        if(v == '')
			        {
			        	var str = "填写";
			        	var tagName = obj.attr("tagName");
			        	var tagType = obj.attr("type");
			        	if(tagName == "SELECT" || tagType == "checkbox" || tagType=="radio")str="选择";
			        	jAlert('info', "["+msg+"]必须"+str+"!", '警告');
			        	return false; 
			        }
			        obj.val(v);
			    }
				var num_objs = $(form).find("*[isnumber='1']");
				for(var i=0; i<num_objs.length; i++)
				{
					 var obj = $(num_objs.get(i));
					 var v = obj.val();
					 var msg = obj.attr("message");
				     if(!/^[\-+]?[\d]*\.?[\d]+$/.test(v))
				     {
				    	 jAlert('info', "["+msg+"]只能是数值", '警告');
				    	 return false;
				     }
				}
				
				var int_objs = $(form).find("*[isint='1']");
				for(var i=0; i<int_objs.length; i++)
				{
					 var obj = $(int_objs.get(i));
					 var v = obj.val();
					 var msg = obj.attr("message");
				     if(!/^\d+$/.test(v))
				     {
				    	 jAlert('info', "["+msg+"]只能是数字组成", '警告');
				    	 return false;
				     }
				}
				
				var min_objs = $(form).find("*[minlength]");
				for(var i=0; i<min_objs.length; i++)
				{
					 var obj = $(min_objs.get(i));
					 var v = $.trim(obj.val());
					 var msg = obj.attr("message");
					 var minlength = obj.attr("minlength");
				     if(v == '' || v.length - minlength < 0)
				     {
				    	 jAlert('info', "["+msg+"]长度不能小于["+minlength+"]", '警告');
				    	 return false;
				     }
				     obj.val(v);
				}
				
				var equal_objs = $(form).find("*[equallength]");
				for(var i=0; i<equal_objs.length; i++)
				{
					 var obj = $(equal_objs.get(i));
					 var v = $.trim(obj.val());
					 var msg = obj.attr("message");
					 var equallength = obj.attr("equallength");
				     if(v == '' || v.length != equallength )
				     {
				    	 jAlert('info', "["+msg+"]长度必须是["+equallength+"]", '警告');
				    	 return false;
				     }
				     obj.val(v);
				}
				
				
				var max_objs = $(form).find("*[maxlength]");
				for(var i=0; i<max_objs.length; i++)
				{
					 var obj = $(max_objs.get(i));
					 var v = $.trim(obj.val());
					 var msg = obj.attr("message");
					 var maxlength = obj.attr("maxlength");
					 obj.val(v);
				     if(v.length - maxlength > 0)
				     {
				    	 jAlert('info', "["+msg+"]长度["+v.length+"]超出最大长度["+maxlength+"]", '警告');
				    	 return false;
				     }
				}
				
				
				var legal_objs = $(form).find("*[legalchar='1']");
				for(var i=0; i<legal_objs.length; i++)
				{
					 var obj = $(legal_objs.get(i));
					 var v = obj.val();
					 var msg = obj.attr("message");
				     if(!COMJS.isLegal(v))
				     {
				    	 jAlert('info', "["+msg+"]只能有数字、英文字母、_、-四种字符组成", '警告');
				    	 return false;
				     }
				}
				
				return true;
			},
			isLegal:function(str)
			{
				return /^[\d\w\-\_]+$/.test(str);
			}
 	}

html示例:
<select message="订货单位" required="1" onchange="orderadd.changeClient(this,this.form)" name="client.id" id="client.id">

<script language="javascript">
COMJS.validate(frm);
</script>

分享到:
评论

相关推荐

    struts2.0的特点

    Struts2.0是Java Web开发领域中的一款流行框架,它是Struts1.x与WebWork框架的结合体,继承了两者的优点并进行了创新。在Struts2.0中,核心概念之一是Action,它被设计为一个简单的POJO(Plain Old Java Object),...

    Eclipse struts2.0可视化开发组件

    ### Eclipse Struts2.0 可视化开发组件知识点详解 #### 一、Struts2.0概述 在深入探讨Eclipse Struts2.0可视化开发组件之前,我们首先需要了解Struts2.0框架的基本概念及其优势。Struts2.0是一个用于Java EE平台的...

    struts2.0英文文档

    ### Struts2.0 关键知识点解析 #### 一、Struts2.0 概述 Struts2.0 是一款基于 Java 的开源 Web 应用框架,它继承了 Struts1.x 的设计理念并在此...希望本文能够帮助大家更好地理解 Struts2.0 的核心概念和技术特点。

    struts2.0学习教程PDF

    #### 二、Struts2.0的核心特点 - **MVC2模型的运用:** Struts2.0延续了MVC设计模式,但相比于原始的Struts1.x,其MVC实现更为灵活和强大,支持更多的交互和数据处理方式。 - **丰富的标签库(TagLibrary):** ...

    struts2.0 spring2.0 hibernate3.0整合开发快速入门-3

    ### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...

    struts2.0和hibernate 共2类JAR包

    Struts2.0和Hibernate是两个非常重要的Java框架,它们在企业级Web应用程序开发中扮演着核心角色。Struts2.0是MVC(模型-视图-控制器)设计模式的一种实现,主要用于处理用户请求和控制应用程序流程。而Hibernate则是...

    STRUTS2.0学习资料

    Struts 2.0 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,它在 Struts 1.x 的基础上进行了许多改进,旨在提供更高效、更灵活的开发体验。本篇文章将深入探讨 Struts 2.0 的核心特性和优势...

    struts2.0中文教程

    #### 一、Struts2.0简介与特点 ##### 1.1 Struts2.0背景及优势 - **MVC架构**:Struts2.0作为MVC(Model-View-Controller)架构的一个实现,通过将业务逻辑、数据展示和用户交互分离,提供了清晰的开发模式。 - **...

    Struts 2.0中文帮助手册.chm

    总之,“Struts 2.0中文帮助手册.chm”是学习和开发Struts 2.0应用的重要参考资料,包含了从基础概念到高级特性的全面指南,有助于开发者快速上手并精通Struts 2.0框架。通过深入学习和实践,开发者可以更好地利用...

    JSP+MYSQL+STRUTS2.0开发的BBS

    "JSP+MYSQL+STRUTS2.0开发的BBS" 这个标题揭示了这个项目是使用三种核心技术构建的一个论坛系统。JSP(JavaServer Pages)是Java的一种动态网页技术,MySQL是开源的关系型数据库管理系统,而Struts2.0则是基于MVC...

    Struts2.0框架技术详解

    Struts2.0提供了一套丰富的标签库,用于简化页面开发过程中的复杂操作。 - **`&lt;s:textfield&gt;`**:用于创建文本输入框。 - **`&lt;s:select&gt;`**:用于创建下拉选择框。 - **`&lt;s:submit&gt;`**:用于创建提交按钮。 - **`...

    ibatis & struts 2.0详细介绍

    在Java Web开发领域,ibatis和Struts 2.0是两个非常重要的框架,它们分别在数据访问层和表现层发挥着关键作用。本篇将深入探讨这两个框架的核心概念、功能及整合方式。 **一、ibatis简介** Ibatis,全称为SQL Map,...

    struts2.0 pdf书

    Struts 2.0 是一个用于开发Java Web应用程序的开源框架,它是Struts 1.x的后续版本,但在设计理念和技术实现上都有很大的不同。Struts 2.0 主要基于MVC(Model-View-Controller)设计模式,旨在帮助开发者构建结构...

    JSP+struts2.0+mysql 图书信息管理

    本系统是一个实用的学习案例,可以帮助开发者深入理解JSP、Struts2.0和MySQL在实际项目中的运用,同时,也可以作为初学者练习Web开发技能的平台。通过学习和实践这个系统,可以提升在企业级Web应用开发中的综合能力...

    Ext + Gwt + Struts2.0开发1

    【Ext + Gwt + Struts2.0 开发1】是一个关于集成三种技术进行Web应用开发的主题。在本文中,我们将深入探讨这三者的技术特点以及如何将它们整合在一起。 **Ext** 是一个用于构建富客户端界面的JavaScript库,它提供...

    网络商城j1051_struts2.0

    三、Struts2.0开发步骤 1. **环境搭建**:首先,需要安装JDK、Eclipse或IntelliJ IDEA等开发工具,然后导入Struts2的相关库,包括struts2-core、struts2-convention-plugin等。 2. **创建Maven项目**:推荐使用...

    struts2.0教程

    一、Struts2.0的主要特点: 1. **Action类和Result**: Struts2.0引入了Action类,它是业务逻辑处理的核心。每个Action对应一个用户请求,并返回一个Result,Result定义了请求处理后的页面跳转逻辑。 2. **OGNL...

    2010毕业设计ebook(servlet+struts2.0)

    Struts2.0的一个显著特点是其拦截器机制,允许开发者定义拦截器链,实现诸如日志记录、事务管理、性能监控等功能。 在2010年的毕业设计中选择Servlet和Struts2.0,学生可能需要掌握以下内容: 1. **Servlet基础**:...

Global site tag (gtag.js) - Google Analytics