- 浏览: 55448 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
892870119:
这么基础的问题,我怎么不知道,查了半天,唉~~~~
Struts s:if 标签 判断中文 -
wnjustdoit:
给力。。。。
struts.xml向页面传参 -
summer_021:
wkshippou 写道汗!怎么去添加web应用的时候不要加上 ...
EE5 jar 冲突解决办法 -
wkshippou:
汗!怎么去
EE5 jar 冲突解决办法
Struts1_学习笔记6_struts0500_actionform_动态ActionForm_转换器
- 博客分类:
- Struts
1、动态ActionForm
动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能
* 在struts-config.xml文件中定义动态ActionForm,如:
*在Action中使用动态ActionForm
动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值
动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}
动态Action的验证,通常使用动态验证框架validator
2、采用struts上传文件
* 页面的配置,如:
<form action="upload.do" method="post" enctype="multipart/form-data">
标题:<input type="text" name="title"><br>
文件:<input type="file" name="myfile"><br>
<input type="submit" value="提交">
</form>
* ActionForm中使用FormFile来接收上传的文件,参见:具体代码
* 在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,详见代码。
* 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>
3、空字段测试
* 在表单中没有input输入域,jsp脚本接收到的值为null,el表达式接收到的值为空串
* 如果表单中的值,没有输入,那么jsp脚本和el表达式接收到的值都为空串
4、测试ActionForm类型的自动转换
* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false
* Date类型的转换:
* 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换
* 如果是java.util.Date,默认情况下struts无法转换
* 自定义转换器的实现步骤
* 实现converter接口,实现convert方法
* 将实现的conerter注册,通常情况采用servlet注册
* 采用servlet注册需要注意标签的配置,<load-on-startup>3</load-on-startup>(也可以采用struts plugin注册)
Servlet方式注册:
1、具体注册的Servlet:
2、具体的转换类:
3、加载Servlet注册类
PlugIn方式注册:
1、注册类
2、转换器:同Servelt注册的转换器
3、加载注册类:
在Struts1配置文件中:
Struts对ActionForm的自动搜集过程:
* 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值
* 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性
根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型
小技巧:可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。
动态ActionForm是为了避免标准ActionForm膨胀而设计的,使用动态ActionForm可以获得标准ActionForm的所有功能
* 在struts-config.xml文件中定义动态ActionForm,如:
<!-- 动态ActionForm 不用自己写ActionForm类了,这里配置。 动态ActionForm可以用动态验证框架 手写的ActionForm可以用validate方法 --> <form-bean name="dynaForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="username" type="java.lang.String"/> <form-property name="age" type="java.lang.Integer"/> </form-bean>
*在Action中使用动态ActionForm
DynaActionForm daf = (DynaActionForm)form; String username = (String)daf.get("username"); Integer age = (Integer)daf.get("age");
动态ActionForm其实是把页面中的html元素的名字和值放到了map中,所以通过get方法可以取出相应的值
动态ActionForm采用EL表达式的输出方式,${dynabean.map.prop}
动态Action的验证,通常使用动态验证框架validator
2、采用struts上传文件
* 页面的配置,如:
<form action="upload.do" method="post" enctype="multipart/form-data">
标题:<input type="text" name="title"><br>
文件:<input type="file" name="myfile"><br>
<input type="submit" value="提交">
</form>
* ActionForm中使用FormFile来接收上传的文件,参见:具体代码
* 在Action中调用FormFile取得上传文件数据,采用流输出,即完成上传,详见代码。
* 采用<controller/>标签配置上传参数,如:<controller maxFileSize="10M"/>
3、空字段测试
* 在表单中没有input输入域,jsp脚本接收到的值为null,el表达式接收到的值为空串
* 如果表单中的值,没有输入,那么jsp脚本和el表达式接收到的值都为空串
4、测试ActionForm类型的自动转换
* boolean:yes,1,on,true都会转换成True类型,而且忽略大小写,其他情况转换成false
* Date类型的转换:
* 如果是java.sql.Date,页面日期的格式必须为yyyy-mm-dd,才可以转换
* 如果是java.util.Date,默认情况下struts无法转换
* 自定义转换器的实现步骤
* 实现converter接口,实现convert方法
* 将实现的conerter注册,通常情况采用servlet注册
* 采用servlet注册需要注意标签的配置,<load-on-startup>3</load-on-startup>(也可以采用struts plugin注册)
Servlet方式注册:
1、具体注册的Servlet:
/** * 注册java.util.date转换器 * @author Administrator * */ public class UtilDateConverterInitWithServlet extends HttpServlet { @Override public void init() throws ServletException { //将UtilDateConverter注册到ConvertUtils里面 ConvertUtils.register(new UtilDateConverter(), Date.class); } }
2、具体的转换类:
public class UtilDateConverter implements Converter { public Object convert(Class type, Object value) { System.out.println("UtilDateConverter.value=" + value); if (value == null) { return value; } if (value instanceof Date) { return value; } Date d = null; if (value instanceof String) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); try { d = sdf.parse((String) value); } catch (ParseException e) { e.printStackTrace(); } } return d; } }
3、加载Servlet注册类
<!-- load-on-startup:大于0就可以了 3也可以. 表示tomcat一启动就执行这个Servlet <servlet> <servlet-name>UtilDateConverterInitWithServlet</servlet-name> <servlet-class>com.aowin.struts.UtilDateConverterInitWithServlet</servlet-class> <load-on-startup>3</load-on-startup> </servlet> -->
PlugIn方式注册:
1、注册类
public class UtilDateConverterInitWithPlugin implements PlugIn { public void destroy() { } public void init(ActionServlet servlet, ModuleConfig config) throws ServletException { System.out.println("UtilDateConverterInitWithPlugin.init()"); ConvertUtils.register(new UtilDateConverter(), Date.class); } }
2、转换器:同Servelt注册的转换器
3、加载注册类:
在Struts1配置文件中:
<!-- 第二种注册转换器方式 plug方式 --> <plug-in className="com.aowin.struts.UtilDateConverterInitWithPlugin"/>
Struts对ActionForm的自动搜集过程:
* 将页面数据放到map中,其中map中的key为页面中的名称,map中的value为页面中的value值
* 调用BeanUtils.setProperties方法,将map中的值逐个设置到ActionForm实例上,对于ActionForm中的每个属性
根据类型调用相应的Converter,然后调用相应的convert方法,将相应的字符串转换成ActionForm中指定的类型
小技巧:可以通过BeanUtils.copyProperties(目标对象,源对象)方法进行对象值的复制。
发表评论
-
Struts1_处理数据的技巧
2012-05-31 21:15 9151、ActionFrom中:productId ... -
Struts1_学习笔记7_struts0600_actionforward_重定向_actionforward_actionmapping
2012-05-30 13:56 2372ActionForward的使用 1、重定向: 第一种实现方 ... -
Struts1中的struts-config.xml配置文件_转
2012-05-30 12:29 821以下内容是否都正确 不 ... -
Struts1_学习笔记5_struts0400_jstl_格式化库_函数库
2012-05-29 14:49 988jstl标签库的配置 * 将jstl.jar和standar ... -
Struts1_学习笔记4_struts0400_jstl_EL表达式_核心库
2012-05-28 21:34 11611、使用JSTL,Servlet最低版本:2.4,查看Serv ... -
Struts1_学习笔记3_struts0300_taglib_bean_logic_Iterate标签
2012-05-28 20:44 1025bean标签: Action: public Actio ... -
Struts1_学习笔记2_struts0200_trainnig_cal
2012-05-28 20:29 625Action: @Override public Ac ... -
Struts1_学习笔记1_struts0100_login
2012-05-28 20:23 842Action:单实例(单例),多线程使用时如果有可以修改的成员 ... -
不用Struts2标签 拿到OGNL值栈的值_转
2012-05-24 16:10 677首先WEBWORK的核心机制是OGNL,于是追了一下有关XWO ... -
(转) Struts2 URL参数 s:if 判断应用
2012-05-04 10:14 694Struts2的s:if标签很怪异,下面来具体地看看,如何用s ... -
Struts2 xml 配置 常量 action_转
2011-08-04 09:50 968<?xml version="1. ... -
Struts2 Iterator 标签
2011-07-05 10:12 797struts2的s:iterator 可以遍历 数据栈里面的任 ... -
Struts 去FieldErrror红点
2011-06-09 17:18 699<style type="text/css&q ... -
Struts s:if 标签 判断中文
2011-06-09 09:54 2611username 来自action 在页面上取得usern ... -
struts.xml向页面传参
2011-06-08 20:54 1903请求地址: <a href="actio ...
相关推荐
Struts_学习笔记之ActionForm,简单配置即可达到效果
05 Struts_05DynaActionForm : 相对应ActionForm来说,动态ActionForm只需要在配置文件中配置就可以了,但是它不能实现验证功能,演示人机交互实例。 06 Struts_06Filter : 中文编码的统一处理,通过Struct的请求...
该avi很好的讲解动态actionForm,通过练习可以理解它的运行过程
struts1使用actionform实现表单验证,表单验证失败追加信息。
NULL 博文链接:https://angelnight.iteye.com/blog/551378
struts 视频 struts视频 actionform
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助。在此谢谢各位!...
比上面的完整 博文链接:https://shangdiyefankun.iteye.com/blog/122443
主要是actionForm的基本验证,重写validate方法,返回actionErrors,然后根据资源文件显示错误。 这是一个demo例子,直接导入eclispe中即可。 并且这部分内容会在相应的博客中介绍,稍后会更新博客。
struts提供了标签来显示整个ActionErrors的错误信息。但要在struts-config.xml中设置<action ...
struts课堂资料\第五章(动态ActionForm与控制器)
Struts Hibernate Spring 集成开发宝典 actionform 有研究或探讨或开源的请加群:37424970 或联系本人MSN或邮箱:zhuseahui@yahoo.com.cn
struts课堂资料\第五章(动态ActionForm与控制器)2
应用程序的 ActionForm 扩展了 Struts 的 org.apache.struts.action.ActionForm 类。ActionForm 是一些封装和验证请求参数的简单 JavaBean。要验证请求数据,ActionForm 的 validate() 方法必须给出一个特定于该情况...
STRUTS ActionForm乱码,servlet全局过滤器转义编码
从控制器角度(Controller) 6 Struts的基本组件包 6 Struts framework的工作原理和组件 7 Struts ActionServlet控制器对象 8 Struts Action Classes 8 Struts Action Mapping 9 使用ActionForward导航 10 ...
6.Struts: Introducing the ActionForm 7.A better way to seperate Book and BookForm 8.Handling Invalid Entries 9.Recapitualation: Where we are 10.Using Logic 11.Templates 12.FAQ 13.Beans ...
Struts2 Struts2 Struts2 教程 1 1 1 :第一个 Struts2 Struts2 Struts2 程序 在本系列教程中我们将学习到 Struts2 的各种技术。在本教程中使用的工具和程序库的版本 如下: 开发工具: MyEclipse6 Web 服务器: ...