一個網站中會有許多的表單以供使用者填寫資料,越大型的網站越需要更多的 ActionForm 物件來應付表單的取值,對於一些表單來說,ActionForm只是單純的設值、取值行為,如果為每一個表單撰寫一個ActionForm,那麼會是一件單純重複且無趣的行為,而且在維護上會更加困難。
對於一些單純的表單來說,您可以使用DynaActionForm類別,您只要在struct-config.xml中設定好相關的設定,就可以自動生成 ActionForm物件,這麼一來您可以集中在struct-config.xml中管理表單物件,也可以省去不是編碼與編譯的工夫。
下面是使用DynaActionForm的一個例子:
struts-config.xml
.... <form-beans> <form-bean name="userForm" type="org.apache.struts.action.DynaActionForm"> <form-property name="name" type="java.lang.String" initial="nobody"/> <form-property name="password" type="java.lang.String" initial="nopass"/> </form-bean> </form-beans> <action-mappings> <action path="/LoginAction" type="onlyfun.caterpillar.LoginAction" name="userForm"> <forward name="helloUser" path="/WEB-INF/pages/hello.jsp"/> .... </action> </action-mappings> ....
注意在<form-bean>的type屬性,設定使用 org.apache.struts.action.DynaActionForm,而Form的屬性則使用<form-property> 標籤來設定,DymaActionForm的type屬性希望得到的一個Java類別名稱,所以對於基本資料型態如int,必須以 java.lang.Integer作為Wrapper類別包裝。
ActionForm類別的reset()方法預設什麼事都不作,除非您重新定義它,DynaActionForm則預設會將所有的資料重設為Java型態的預設值,例如數字重設為0,而Object則重設為null,您也可以使用initial屬性來設定重設的值。
DynaActionForm同樣也被當作參數傳遞給execute()方法,DynaActionForm使用Map型態的方法來取值,下面的 Action類別示範了如何取得DynaActionForm的屬性值:
LoginAction.java
package onlyfun.caterpillar; import javax.servlet.http.*; import org.apache.struts.action.*; public class LoginAction extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm dynaForm = (DynaActionForm) form; String name = (String) dynaForm.get("name"); String password = (String) dynaForm.get("password"); .... } }
DynaActionForm預設並沒有為validate()方法提供任何行為,如果需要的話,您可以透過繼承DynaActionForm來定義 validate()方法,並於<form-bean>的type中設定為您所撰寫的類別。
分享到:
- 2008-01-05 14:11
- 浏览 1359
- 评论(0)
- 论坛回复 / 浏览 (0 / 1643)
- 查看更多
相关推荐
2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八...
基数排序法 102 42.Algorithm Gossip: 循序搜寻法(使用卫兵) 104 43.Algorithm Gossip: 二分搜寻法(搜寻原则的代表) 106 44.Algorithm Gossip: 插补搜寻法 109 45.Algorithm Gossip: 费氏搜寻法 ...
2.Algorithm Gossip: 费式数列 5 3. 巴斯卡三角形 6 4.Algorithm Gossip: 三色棋 7 5.Algorithm Gossip: 老鼠走迷官(一) 9 6.Algorithm Gossip: 老鼠走迷官(二) 11 7.Algorithm Gossip: 骑士走棋盘 ...
随着业务量的增加,单机系统由于性能和稳定性的局限性,开始转向使用多机分布式系统。分布式系统由多台服务器组成,形成一个集群,以提高服务能力。在分布式系统中,用户请求需要被有效地分发到集群中的不同服务器上...
2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇 9....
Struts Gossip,这个名字可能指的是一个关于Struts框架的学习资源集合,由台湾知名IT专家林信良创作。林信良以其在Spring技术手册中的贡献而闻名,他的笔记通常深入浅出,适合开发者参考和学习。Struts是Apache软件...
草稿用法: from("gossip://<bound>:<port>/?peers=<listOfPeers>&routeIds=<listOfRouteIdsToControl>").to("controlbus:route");listOfRouteIdsToControl在此节点被提升/降级时启动/停止。 当您在需要故障转移...
Gossip协议的Go实现。 概述 该软件包提供了最终一致的内存中数据存储的实现。 数据存储值使用推挽式八卦协议进行交换。 // Create a gossiper g := NewGossiper("<ip>:<port>", "<unique>", "<peer>") // Add ...
针对在分布式一致性系统中常用的gossip算法负载均衡效率较低的问题,本文在概率gossip算法(probabilistic gossip algorithm)的基础上,设计了一种寄存器gossip算法(register gossip algorithm,下文简称R-gossip...
gossip - yet another lisp interpreter gossip是一个lisp解释器, 语法借鉴了scheme以及common lisp, 此项目的主要目的是学习。 安装 下载源码 打包: mvn package 运行方式: java -jar your_gossip_home/gossip-1.0-...
分布式八卦算法,通常被称为Gossip协议,是一种在分布式系统中高效传播和同步信息的方法。它在许多场景下被广泛使用,比如在大规模的数据库复制、负载均衡、故障检测以及网络中的消息传递等。这种算法的设计灵感来源...
nodejs_八卦 nodejs八卦协议实现 nodejs 八卦.js 连接到 localhost:8080 在 chrome 中查看网络状态 控制台命令: 重启重置对等体颜色 css_color 建立网络的节点 断网示例 重建网络
有一个可以帮助您使用Gossip创建和交付演示文稿所需的所有技术。 还有即将推出的英文教程。 何苦? 八卦的灵感来自 。 尽管impress.js令人印象深刻,但也很难使用,因为您必须进行编码...同时,现有的创作和交付...
要使用 ID 包,我建议创建一个运行 new(PeerID) 的“主”ID,然后在该 ID 指针上调用 ServeIDs 函数。 ServeIDs 函数将通过通道(用于进程间通信的线程安全队列原语)提供新的 ID。 TTL TTL 包实现了生存时间结构...
标题“良葛格Gossip_struts_spring_hibernate”表明这是一个关于编程框架和技术教程的集合,其中涵盖了Spring、Struts和Hibernate等关键组件。描述提到是Spring技术手册的作者提供的教程,暗示内容可能深入且权威。 ...
标题中的“gossip”通常指的是一个分布式通信协议或库,用于节点间的高效、可靠的消息传递。在这种场景下,它可能是用JavaScript实现的一个轻量级、去中心化的通信框架,允许程序通过网络套接字(network sockets)...
Gossip 是一个套接字服务器,它使用 Phoenix 通道在 Inch CI 的工作进程和连接的客户端之间传递消息。 用法 要启动新的 Phoenix 应用程序: 使用mix deps.get安装依赖mix deps.get 使用mix phoenix.server启动 ...
「来道题」服务端面试真题全解析 互联网大厂的资深工程师,带您开启技术成长之路~ 多年大规模在线服务实战经验,近百场校招、社招面试经历,告诉您最...Redis的Gossip协议:随机通信,最终一致;PING、PONG;配置纪元