`
xitong
  • 浏览: 6202684 次
文章分类
社区版块
存档分类
最新评论

深入研究struts中的formbean

 
阅读更多

struts中的formbean主要是用来封装(通过反射)浏览器或使用http协议的客户端提交的表单数据,我想大家在这一点上已达成共识,没什么好说的,在这层意义上,<html:text>之类表单struts tag,似乎没有什么用武之地,实际上也确实如此,使用普通的html tag可达到同样效果.但有一点很重要的是:struts tag可以自动从后台获取数据来填充页面.

下面举个例子来探讨这种机制:

现有两个action类,AAction,BAction

两个Form类,AForm,BForm

一个页面:A.jsp

这五个元素关系如下:

AAction 使用AForm,BAction使用BForm,AAction对应A.jsp,AForm和BForm都含有x和y属性,A.jsp的部分关键代码如下:

<html:form action="/BAction">

<html:text property="x" />

<html:text property="y"/>

</html:form>

当点击AAction(假设在其中使用request.setAttribute("VO",AForm),并且AForm.x=10,AForm.y=20时),出现A.jsp,但输入框x,和y空白,但如果AForm就是BForm的话,两个输入框会出现10和20,其实此时并不需要写request.setAttribute("VO",AForm),Struts有个很重要的特点是:当启动一个action时,struts实例化相应的form(如果有的话),并在forward的时候,会自动写上request.setAttrbute(formname,form),formname即你在配置文件中定义的form名,在本例中点击AAction,当AAction forward的时候,会自动写上request("AForm",AForm),所以当你想偷懒直接将form 传到页面上填充数据时,就不需要显式的这样写了.

当然如果AForm并不是BForm,你也可以这样写达到这种效果

<html:text name="VO" property="x"/>

<html:text name="VO" property="y"/>

由以上可以推断:

<html:form action="/BAction">

<html:text property="x" />

<html:text property="y"/>

</html:form>

实际上就是

<html:form action="/BAction">

<html:text name="BForm" property="x" />

<html:text name="BForm" property="y"/>

</html:form>

值得注意的是BForm可以为空,如果你将name="BForm" 改为name="VO"当然也可以是别的名,VO不能为空

由此当AForm并不是BForm的时候,我们有一种更简便的方案,即写上request.setAttribute("BForm" ,AForm),

这样就不用改页面了,但必须注意AForm必须有相应的属性

后记:

j2ee的常规做法并不推荐返回form作为jsp的数据,而应该返回一个value object或data transfer object

分享到:
评论

相关推荐

    Struts中FormBean的日期类型字段赋值自动转化

    NULL 博文链接:https://zywang.iteye.com/blog/413003

    Struts1.2动态FormBean加验证功能的一个例子

    Struts1.2动态FormBean 加 验证功能 的一个例子

    struts1和struts2的区别

    Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。 虽然,在理论上Struts2的...

    struts1&struts2

    2.Struts2和Struts1.x的... Struts1.x 必须继承org.apache.struts.action.Action或者其子类,表单数据封装在FormBean中。 Struts 2无须继承任何类型或实现任何接口,表单数据包含在Action中,通过Getter和Setter获取。

    谈谈你对Struts的理解。

     4.action执行完后要返回显示的结果视图,这个结果视图是用一个ActionForward对象来表示的,actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,因为程序中使用的是在struts-config.xml...

    利用java反射校验struts中的form(含正则表达式)

    利用java反射校验struts中的formbean 在struts框架中,如果每次都去校验form中的每个字段,显然费时费力,本例通过java反射得到form中的字段和值,并较验,用于在与数据库交互之前的校验,从而防止数据库恶意注入. 随包...

    struts高级实战进阶

    传智播客的struts高级实战进阶 ...封装Formbean数据时的问题 防止表单重复提交 使用复选框的技巧 使用下拉列表框的技巧 文件上传 DispatchAction的应用 Validator框架 Struts请求处理过程的源码分析与digester

    Struts原理、开发及项目实施

    流程:在Struts中,用户的请求一般以*.do作为请求服务名,所有的*.do请求均被指向ActionSevlet,ActionSevlet根据Struts-config.xml中的配置信息,将用户请求封装成一个指定名称的FormBean,并将此FormBean传...

    json java读取 formbean操作

    NULL 博文链接:https://haixiami200411.iteye.com/blog/736554

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    在弹出的菜单中,根据图例提示,选择Myeclipse后在弹出的二级菜单中选择Add Struts Capabilities…后提示如下图所示: 在弹出的对话框中,设置如下: Struts config path:默认,一般不需要改变。 Struts ...

    struts2 (对象.属性)注入

    在struts2中已经不需要struts1中的formbean了。在struts1中每次提交表单的时候,表单中的属性值都先赋予formbean,然后操作formbean。但是现在struts2中用对象.属性名来给对象赋值,然后操作这个对象。而这些对象都...

    Struts使用技巧和注意事项

    ----Struts 使用技巧---- 1 Struts validate 1.1 使用ActionForm的validate()验证 ...&gt; 配置FormBean: 配置FormBean中的validate()方法,处理相关验证; &gt; 配置Jsp:配置JSP中相关信息接受后台验证信息的处理结果;

    Struts html:checkbox框初始默认是选中的解决方法

    在Struts中几种情况可以使标签初始就是选中的,Formbean里面该Property的值设为 1.on 、2.yes 、3.true 这三种情况都是可以实现默认选中的。 注:如果不选中,最好把Property的设置为””,因为在Action中得到...

    动态验证formbean

    介绍如何使用动态formbean的例子

    java 经典面试题 于网络分享

    7. struts框架中,关于FormBean,下列哪些说法是正确的: A FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证...

    Struts框架

    Struts1.0和1.1差别很大,主要有两点:Struts1.1中引用了很多apache其他项目的类包,如:xml解析、日志、验证等,因此struts1.1的包结构与1.0完全不同。在struts1.1环境下,一个webapp要成功运行,除了struts.jar外...

    struts2验证示例

    使用struts2的验证模式,并在里面使用了formbean的模式。

    newxy(新坐标)web快速开发包

    newxy是hibernate的替代者,是web快速开发...2.《web开发:通用持久类代替hibernate的持久类、通用动态formBean类代替struts的formBean类》http://dev.csdn.net/author/nlhlx/d4343e375a9d42e2b3402eaa549d225f.html

Global site tag (gtag.js) - Google Analytics