惰性动态Action表单
来源:互联网 发布:godaddy 阿里云 编辑:程序博客网 时间:2024/04/30 22:18
当属性的值不确定或者完全在运行时才可知的情况下,想创建一个表单。
解决方案
使用Niall Pemberton的Lazy DynaBean表单,可以从http://www.niallp.pwp. blueyonder.co.uk/下载。
在struts-config.xml中声明form-bean:
<form-bean name="LazyForm"
type="lib.framework.struts.LazyValidatorForm"/>
接着,就像使用普通的ActionForm一样使用JSP页面的表单。例5.8显示一个JSP页面(lazy_form_test.jsp),此页面使用了之前声明的LazyForm。
例5.8:在HTML表单中使用LazyValidatorForm
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix= "html" %>
<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix= "bean" %>
<html>
<head>
<title>Struts Cookbook - Chapter 5 : Lazy Form</title>
</head>
<body>
<h2>Lazy Form Test</h2>
<html:form action="/ProcessLazyForm">
What is your name:<br />
First Name: <html:text property="firstName"/><br />
Last Name: <html:text property="lastName"/><br />
Do you want to subscribe to our newsletter?<br />
<html:checkbox property="subscribe"/><br />
Who are your 3 friends:<br />
Friend 1: <html:text property="friend[0].name"/><br />
Friend 2: <html:text property="friend[1].name"/><br />
Friend 3: <html:text property="friend[2].name"/><br />
<html:submit/>
</html:form>
<hr />
Your name is: <bean:write name="LazyForm" property="firstName"/>
<bean:write name="LazyForm" property="lastName"/><br />
Your friends are:<br />
<bean:write name="LazyForm" property="friend[0].name"/><br />
<bean:write name="LazyForm" property="friend[1].name"/><br />
<bean:write name="LazyForm" property="friend[2].name"/><br />
</body>
</html>
在接收表单的Action中,把表单转化为DynaBean (org.apache.commons.beanutils. DynaBean)。接下来,通过使用get("name")方法访问属性。由于LazyValidatorForm 继承自ValidatorForm,您可以在您的validation.xml文件中定义一个标准的Struts Validator验证规则。
讨论
有时候,您可能需要显示一组数据的输入字段,而这些要到运行时才知道。考虑一个允许潜在购买者配置所购产品的应用——例如在线购买计算机。可供选择的配置随产品和目前的促销而改变。配置的数据通常从实际的数据库中来,所以页面需要依实际情况确定。
LazyValidatorForm和LazyValidatorActionForm允许form属性在需要时自动创建。特别的,在这些类中索引属性受LazyList支持。此列表在必要时调整大小,而不是在您试图访问一个超出现有大小的索引时抛出IndexOutOfBoundsException异常。像DynaActionForm那样,这些表单实现了DynaBean接口并且在Map中存储属性。尽管如此,和DynaActionForm不同的是,新的属性可以在任何时间加入其中。在这个解决方案中,在struts-config.xml中声明表单就像是定义一个自定义的ActionForm,没有指定任何form-property。
在使用表单的JSP页面中,Struts标签的用法和普通的ActionForm没有什么区别。在这个解决方案中,创建了两个文本字段(“firstName”和“lastName”)、一个Boolean字段 (“subscribe”)以及三个索引属性 (friend[i].name)值被创建。
这些类的使用并不常见,然而,它们能够在某些场合发挥作用。使用这些类的一个场合是当您原型化一个应用程序或者新的特性时。一旦明确需求,就可以使用正常的ActionForm 或者DynaActionForm替换lazy action。
警告:使用惰性action表单避开了ActionForm通常提供的防火墙。换句话说,lazy ActionForm实例会被填入所有请求参数,不论您是否希望如此。要保证您不会盲目地接受这些值并把它们传递到业务模型中,而是找到您希望的特定值。
- 惰性动态Action表单
- 惰性动态Action表单
- 动态改变表单的action.
- 动态表单和定制化Action
- 动态表单和定制化Action
- 如何动态改变form表单的action
- struts2动态方法调用,javascript动态修改表单的action
- 如何动态的提交表单(即改变form的action)
- js 提交form表单时,action的动态修改方法
- DWZ 动态表单提交数据 action接收值
- jquery 动态为表单的input ,action赋值
- js动态更改Form表单action,进行提交
- DispatchAction 分派action与Dynimic form 动态表单
- 动态改变form表单中action的值
- 惰性
- 惰性
- 惰性
- 惰性
- 人生若只如初见!
- 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】LAJP系列教程-第二部分-HelloWorld(windows)
- Struts1.2实用新功能(1),LazyValidatorForm
- AT91SAM9263 WINCE 6.0 R2驱动开发-官方BSP包TFTLCD显示调试
- 十一长假
- 惰性动态Action表单
- String.replaceAll, replace使用误区
- Collect SAP Table which use at work
- const的思考
- 不必烦恼你为什么烦恼?
- 这个习惯不太好
- 飞机上听一对父女的对话
- 堆、栈及静态数据区详解
- 调试makefile 工程