免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 939 | 回复: 0
打印 上一主题 下一主题

struts的新特性:Lazy ActionForm [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-13 21:09 |只看该作者 |倒序浏览

STRUTS的 ActionForm到现在为止,出现了最少三种方式: 普通的,动态的和懒的.
所以你在你自已的开发中,可以有很多选择,如果你安全第一,可以用普通的.如果你更喜欢XML,则用动态的.
如果你很懒,那就用Lazy ActionForm.
STRUTS提供的这三种ActionForm方式,要实际应用中你只要选择一种就可以了.
下面说说Lazy ActionForm:
如果你喜欢STRUTS的强大的功能的特性(就比如这个ActionForm有多种选择),又喜欢快捷, Lazy ActionForm对你来说是一个好消息. 这个有点类似于WW2中值得称道的一个特性,可以减少编写ActionForm的麻烦.(STRUTS正在把WW2中好的东西都吸收进来了,难怪这两个东西以后会合并为STRUTS IT).
示例代码如下:
struts-config.xml配置
代码
struts-config>  
  
      form-beans>  
          form-bean name="lazyForm" type="org.apache.struts.validator.LazyValidatorForm"/>  
      form-beans>  
  
      action-mappings>  
          action path="/myActionPath" type="myPackage.MyAction" name="lazyForm" validate="true"/>  
      action-mappings>  
  
   struts-config>  
JSP网页
代码
html:form action="/myActionPath">  
  
       h2>Simple Property Exampleh2>  
            
          Customer Number: html:text property="custNo"/>  
          Customer Name:   html:text property="custName"/>  
  
       h2>Mapped Property Exampleh2>  
            
          Street:  html:text property="address(street)"/>  
          Town:    html:text property="address(town)"/>  
          State:   html:text property="address(state)"/>  
          Country: html:text property="address(country)"/>  
  
       h2>Indexed Property Exampleh2>  
            
          logic:iterate id="products" property="products">  
             Product Code:        html:text name="products" property="code"        indexed="true"/>  
             Product Description: html:text name="products" property="description" indexed="true"/>  
             Product Price:       html:text name="products" property="price"       indexed="true"/>  
          logic:iterate>  
  
    html:form>  
action调用
代码
public ActionForward execute(ActionMapping mapping,   
                             ActionForm form,   
                             HttpServeletRequest request,   
                             HttpServletResponse response) throws Exception {   
  
   // Cast form to DynaBean   
   DynaBean dynaForm = (DynaBean)form;   
  
   // Use the DynaBean   
   String custNo = (String)dynaForm.get("custNo");   // simple   
   Map address   = (Map)dynaForm.get("address");     // mapped   
   List products = (List)dynaForm.get("products");   // indexed     
  
   ... etc etc   
  
}   
在ACTION中,你可以使用 BeanUtils 1.7.0的特性,把dynaForm一次性拷贝到HIBERNATE的POJO中去!

public class dynaForm extends LazyValidatorForm{   
    private Address address= new Address();   
    private Map addressMap = new Map();   
    //...some get/set   
}   
  
       h2>Mapped Property Exampleh2>   
            
          Street:  html:text property="addressMap(address.street)"/>   
          Town:    html:text property="addressMap(address.town)"/>   
          State:   html:text property="addressMap(address.state)"/>   
          Country: html:text property="addressMap(address.country)"/>   
  
//此时addressMap中存放每一行address对象   
Map addressMap  = (Map)dynaForm.get("address");   
代码
logic:iterate id="products" property="products">   
             Product Code:        html:text name="products" property="addressMap(address.street)"        indexed="true"/>   
             Product Description: html:text name="products" property="addressMap(address.town)" indexed="true"/>   
             Product Price:       html:text name="products" property="addressMap(address.state)"       indexed="true"/>   
          logic:iterate>   
然后
代码
List products = (List)dynaForm.get("products");   // indexed     
ap address   = (Map) products.get(0);   

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/38180/showart_421589.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP