`
charm_888
  • 浏览: 25957 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts Gossip: 使用 DynaActionForm

阅读更多
一個網站中會有許多的表單以供使用者填寫資料,越大型的網站越需要更多的 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中設定為您所撰寫的類別。

分享到:
评论

相关推荐

    Java经典问题算法大全

    2.Algorithm Gossip: 费式数列. 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官(一) 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八...

    经典算法大全.pdf

    基数排序法 102 42.Algorithm Gossip: 循序搜寻法(使用卫兵) 104 43.Algorithm Gossip: 二分搜寻法(搜寻原则的代表) 106 44.Algorithm Gossip: 插补搜寻法 109 45.Algorithm Gossip: 费氏搜寻法 ...

    经典算法大全

    巴斯卡三角形4.Algorithm Gossip: 三色棋5.Algorithm Gossip: 老鼠走迷官(一6.Algorithm Gossip: 老鼠走迷官(二7.Algorithm Gossip: 骑士走棋盘8.Algorithm Gossip: 八皇后9.Algorithm Gossip: 八枚银币10....

    Algorithm.rar_Algorithm Gossip_gossip_gossip algorithm_gossip算法

    2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 5.Algorithm Gossip: 老鼠走迷官 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 8.Algorithm Gossip: 八皇 9....

    ACM51个经典算法大全

    老鼠走迷宫(二)7.Algorithm Gossip: 骑士走棋盘8.Algorithm Gossip: 八皇后9.Algorithm Gossip: 八枚银币10.Algorithm Gossip: 生命游戏11.Algorithm Gossip: 字串核对12.Algorithm Gossip: 双色、三色河内塔13....

    C 语言经典算法大全

    2.Algorithm Gossip: 费式数列......................... 5 3. 巴斯卡三角形........................................ 6 4.Algorithm Gossip: 三色棋.................. 7 5.Algorithm Gossip: 老鼠走迷官(一)......

    R-gossip:分布式负载均衡效率优化算法.pdf

    #资源达人分享计划#

    camel-gossip:骆驼八卦

    草稿用法: from("gossip://&lt;bound&gt;:&lt;port&gt;/?peers=&lt;listOfPeers&gt;&routeIds=&lt;listOfRouteIdsToControl&gt;").to("controlbus:route");listOfRouteIdsToControl在此节点被提升/降级时启动/停止。 当您在需要故障转移...

    gossip:Gossip协议的Go实现

    Gossip协议的Go实现。 概述 该软件包提供了最终一致的内存中数据存储的实现。 数据存储值使用推挽式八卦协议进行交换。 // Create a gossiper g := NewGossiper("&lt;ip&gt;:&lt;port&gt;", "&lt;unique&gt;", "&lt;peer&gt;") // Add ...

    Struts Gossip

    台湾林信良(就是编写Spring技术手册的那个良葛格)的Struts笔记,写的很好,可以参考学习一下。

    R-gossip:分布式负载均衡效率优化算法

    针对在分布式一致性系统中常用的gossip算法负载均衡效率较低的问题,本文在概率gossip算法(probabilistic gossip algorithm)的基础上,设计了一种寄存器gossip算法(register gossip algorithm,下文简称R-gossip...

    99乘法表java源码-gossip:一个javalisp解析器

    gossip - yet another lisp interpreter gossip是一个lisp解释器, 语法借鉴了scheme以及common lisp, 此项目的主要目的是学习。 安装 下载源码 打包: mvn package 运行方式: java -jar your_gossip_home/gossip-1.0-...

    Java算法经典案列

    2.Algorithm Gossip: 费式数列 3. 巴斯卡三角形 4.Algorithm Gossip: 三色棋 6.Algorithm Gossip: 老鼠走迷官(二) 7.Algorithm Gossip: 骑士走棋盘 9.Algorithm Gossip: 八枚银币

    C语言经典算法

    非常完美的C语言经典算法 Algorithm Gossip: 2 2N+1 魔方阵 Algorithm Gossip: 4N 魔方阵 Algorithm Gossip: 奇数魔方阵 Algorithm Gossip: 上三角 下三角 对称矩阵

    nodejs_gossip:nodejs八卦协议实现

    nodejs_八卦 nodejs八卦协议实现 nodejs 八卦.js 连接到 localhost:8080 在 chrome 中查看网络状态 控制台命令: 重启重置对等体颜色 css_color 建立网络的节点 断网示例 重建网络

    gossip:一个在线用户界面,可以有效地创作和交付令人敬畏的和内容丰富的演示文稿。 :rocket:

    有一个可以帮助您使用Gossip创建和交付演示文稿所需的所有技术。 还有即将推出的英文教程。 何苦? 八卦的灵感来自 。 尽管impress.js令人印象深刻,但也很难使用,因为您必须进行编码...同时,现有的创作和交付...

    cc++经典算法大全.pdf

    2.AlgorithmGossip:费式数列........................................................................................................5 3.巴斯卡三角形.........................................................

    p2p-gossip:用于请求工件的 p2p 八卦协议

    要使用 ID 包,我建议创建一个运行 new(PeerID) 的“主”ID,然后在该 ID 指针上调用 ServeIDs 函数。 ServeIDs 函数将通过通道(用于进程间通信的线程安全队列原语)提供新的 ID。 TTL TTL 包实现了生存时间结构...

Global site tag (gtag.js) - Google Analytics