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是Java Web开发领域中的一款流行框架,它是Struts1.x与WebWork框架的结合体,继承了两者的优点并进行了创新。在Struts2.0中,核心概念之一是Action,它被设计为一个简单的POJO(Plain Old Java Object),...
Struts2.0 是一款基于模型-视图-控制器(MVC)设计模式的Java Web应用程序框架,由Apache软件基金会开发。它简化了Java web应用的开发,提供了强大的功能,如动作映射、数据绑定、异常处理、国际化、以及丰富的视图...
### Eclipse Struts2.0 可视化开发组件知识点详解 #### 一、Struts2.0概述 在深入探讨Eclipse Struts2.0可视化开发组件之前,我们首先需要了解Struts2.0框架的基本概念及其优势。Struts2.0是一个用于Java EE平台的...
### Struts2.0 关键知识点解析 #### 一、Struts2.0 概述 Struts2.0 是一款基于 Java 的开源 Web 应用框架,它继承了 Struts1.x 的设计理念并在此...希望本文能够帮助大家更好地理解 Struts2.0 的核心概念和技术特点。
#### 二、Struts2.0的核心特点 - **MVC2模型的运用:** Struts2.0延续了MVC设计模式,但相比于原始的Struts1.x,其MVC实现更为灵活和强大,支持更多的交互和数据处理方式。 - **丰富的标签库(TagLibrary):** ...
### Struts2.0、Spring2.0与Hibernate3.0整合开发快速入门知识点解析 #### 一、Struts2.0与Hibernate3.0整合基础 **知识点1:Struts2.0简介** - **定义**: Struts2是Apache基金会下的一个开源项目,它是一个基于...
Struts2.0和Hibernate是两个非常重要的Java框架,它们在企业级Web应用程序开发中扮演着核心角色。Struts2.0是MVC(模型-视图-控制器)设计模式的一种实现,主要用于处理用户请求和控制应用程序流程。而Hibernate则是...
Struts 2.0 是一个基于 Model-View-Controller (MVC) 设计模式的 Java Web 开发框架,它在 Struts 1.x 的基础上进行了许多改进,旨在提供更高效、更灵活的开发体验。本篇文章将深入探讨 Struts 2.0 的核心特性和优势...
#### 一、Struts2.0简介与特点 ##### 1.1 Struts2.0背景及优势 - **MVC架构**:Struts2.0作为MVC(Model-View-Controller)架构的一个实现,通过将业务逻辑、数据展示和用户交互分离,提供了清晰的开发模式。 - **...
总之,“Struts 2.0中文帮助手册.chm”是学习和开发Struts 2.0应用的重要参考资料,包含了从基础概念到高级特性的全面指南,有助于开发者快速上手并精通Struts 2.0框架。通过深入学习和实践,开发者可以更好地利用...
"JSP+MYSQL+STRUTS2.0开发的BBS" 这个标题揭示了这个项目是使用三种核心技术构建的一个论坛系统。JSP(JavaServer Pages)是Java的一种动态网页技术,MySQL是开源的关系型数据库管理系统,而Struts2.0则是基于MVC...
Struts2.0提供了一套丰富的标签库,用于简化页面开发过程中的复杂操作。 - **`<s:textfield>`**:用于创建文本输入框。 - **`<s:select>`**:用于创建下拉选择框。 - **`<s:submit>`**:用于创建提交按钮。 - **`...
在Java Web开发领域,ibatis和Struts 2.0是两个非常重要的框架,它们分别在数据访问层和表现层发挥着关键作用。本篇将深入探讨这两个框架的核心概念、功能及整合方式。 **一、ibatis简介** Ibatis,全称为SQL Map,...
Struts 2.0 是一个用于开发Java Web应用程序的开源框架,它是Struts 1.x的后续版本,但在设计理念和技术实现上都有很大的不同。Struts 2.0 主要基于MVC(Model-View-Controller)设计模式,旨在帮助开发者构建结构...
本系统是一个实用的学习案例,可以帮助开发者深入理解JSP、Struts2.0和MySQL在实际项目中的运用,同时,也可以作为初学者练习Web开发技能的平台。通过学习和实践这个系统,可以提升在企业级Web应用开发中的综合能力...
【Ext + Gwt + Struts2.0 开发1】是一个关于集成三种技术进行Web应用开发的主题。在本文中,我们将深入探讨这三者的技术特点以及如何将它们整合在一起。 **Ext** 是一个用于构建富客户端界面的JavaScript库,它提供...
三、Struts2.0开发步骤 1. **环境搭建**:首先,需要安装JDK、Eclipse或IntelliJ IDEA等开发工具,然后导入Struts2的相关库,包括struts2-core、struts2-convention-plugin等。 2. **创建Maven项目**:推荐使用...
一、Struts2.0的主要特点: 1. **Action类和Result**: Struts2.0引入了Action类,它是业务逻辑处理的核心。每个Action对应一个用户请求,并返回一个Result,Result定义了请求处理后的页面跳转逻辑。 2. **OGNL...
Struts2.0的一个显著特点是其拦截器机制,允许开发者定义拦截器链,实现诸如日志记录、事务管理、性能监控等功能。 在2010年的毕业设计中选择Servlet和Struts2.0,学生可能需要掌握以下内容: 1. **Servlet基础**:...