入門 10 - Map-backed ActionForm
参考:
http://www.jajakarta.org/struts/struts1.2/documentation/ja/target/userGuide/building_controller.html
原文:
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=502
有的時候您的表單內容可能是由程式動態產生的,這時候表單上的欄位與參數我們事先並無法得知,因而無法事先決定好ActionForm的屬性,在Struts 1.1中,您可以使用Map-backed ActionForm,這樣的ActionForm使用Map來儲存表單的欄位值,一個例子如下:
UserForm.java
package onlyfun.caterpillar;
import java.util.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
public class UserForm extends ActionForm {
protected Map map = new HashMap();
public void setValue(String key, Object value) {
map.put(key, value);
}
public Object getValue(String key) {
return map.get(key);
}
public Map getMap() {
return map;
}
public void reset(ActionMapping mapping, HttpServletRequest req) {
map.clear();
}
} 在Action類別中,您可以如下面的方式來取值:
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 {
UserForm userForm = (UserForm) form;
String name = (String) userForm.getValue("name");
String password = (String) userForm.getValue("password");
if(name.equals("caterpillar") && password.equals("1234")) {
request.setAttribute("valid_user", form);
return mapping.findForward("greeting");
}
return mapping.findForward("welcome");
}
} 為了要能夠設定值給這個ActionForm,在表單上,您要使用name="value(key)"來設定欄位名稱,例如:
<html:form action="/LoginAction" focus="name">
名稱:<html:text property="value(name)" size="20"/><br>
密碼:<html:password property="value(password)" size="20"/><br>
<html:submit/> <html:reset/>
</html:form> 同樣的,如果要使用<bean:write>標籤來寫出ActionForm的值,我們也要使用value(key)的方法來取值,例如:
<logic:present scope="request" name="valid_user">
<bean:write name="valid_user" property="value(name)"/>您好,這是您的神秘禮物!
</logic:present> 在我們的ActionForm中,我們提供了getMap()方法,這樣作可以方便透過EL來取值,例如:
${valid_user.map.name}
${valid_user.map.password}
分享到:
相关推荐
最彻底的和有改革意义的发明是那些能够帮助他人释放创造力去追求属于自己的梦想的发明,而Amazon AWS可能正是移动应用开发领域最重要的一件事情,他帮助整个一代的mobile app开发人员去释放创造力,去创新,去更好更...
aws-git-backed-static-website, Git支持的static 网站完全由 AWS CloudFormation栈供电 git支持的static 网站完全由AWS供电 博客文章AWS git备份 static 网站概述这个项目包含一个 YAML CloudFormation模板that创建...
docker-s3-backed-ftp-server 由vsftpd和s3fs-fuse驱动的S3支持的FTP服务器的Docker映像。用法建造$ docker build -t s3-backed-ftp-server .跑步$ docker run -itd \ --cap-add MKNOD \ --cap-add SYS_ADMIN \ --...
npm i -S buffer-backed-object为什么?网络工作者使用,通常需要考虑postMessage() (或确切地说是postMessage()的性能。尽管,但它有时仍会成为瓶颈,尤其是在负载较大的情况下。 及其的克隆速度非常快(甚至可以...
单个接收器,处理时间为10毫秒(10毫秒后响应202) 6个生成器,每个生成器每秒发送100条消息->定向发送的消息总数为600条消息/秒 已发送的邮件总数:1000 * 6 = 6000 结果: 消息发送花费了20秒-> 6000/20 = 300...
上述提到的书籍《The Handbook of Mortgage-backed Securities 6th》由Frank J. Fabozzi博士编写。Fabozzi是一位知名的金融领域专家,他出版了多部关于固定收益证券和投资组合管理的书籍。《The Handbook of ...
8. **实际项目结构**:`webpack-typescript-backed-master` 压缩包可能包含了项目的基本结构,如 `src` 目录存放源码,`dist` 目录是编译后的输出,以及 `package.json` 文件管理项目依赖。 9. **测试**:在 ...
spring-cloud-config-example 使用 spring-cloud-config 从 git-backed 服务器检索配置的基本示例快速开始构建代码git clone git@github.... 这将显示从 bootstrap.yml 中定义的 git repo 中检索的配置属性。...
前夕:使用MongoDB和Flask构建RESTful API 课程总结 Eve是一个为人类设计的开源Python REST API框架。 它允许轻松地构建和部署高度可定制的,功能齐全的RESTful Web服务。 这门课程的内容是什么?...
82Mortgage-Backed Securities V3.xls
这是由美联储经济数据库(FRED)托管的美联储数据集。 MBST.csv mortgage-backed-securities-held-by-the-federal-reserve-all-maturities-discontinued_metadata.json
* Full-featured event loop backed by epoll, kqueue, IOCP, event ports. * Asynchronous TCP and UDP sockets * Asynchronous DNS resolution * Asynchronous file and file system operations * File ...
NBDT在CIFAR10,CIFAR100,TinyImagenet200,ImageNet上与现代神经网络相匹配或优于现代神经网络,并且可以更好地将未分类的类别泛化至多16%。此外,我们的损失将原始模型的准确性提高了2%。我们在ImageNet上达到...
本文主要聚焦于Struts框架中的几个关键概念:Map-backed ActionForm、Action类层次结构、标准桥式Action类(如DispatchAction)以及它们的工作原理。 ### Map-backed ActionForm #### 1. 概念介绍 从Struts 1.1...
React 16.3,Jupyter和Binder 使用如下界面对一些组件进行试验: import HostProvider , { Consumer as HostConsumer } from "@rgbkrk/binder-hosts" { host => < pre> { JSON .... / pre > } ...
这是由美联储经济数据库 (FRED) 托管的美联储的数据集。FRED有一个数据平台,他们根据数据更新的频率更新他们的信息。 ABCOMP.csv asset-backed-commercial-paper-outstanding_metadata.json
Mesos 状态支持的集合 由 Mesos 状态 API 的实现支持的持久性集合类型。 API 使用示例(进行中) import akka . util ....import mesosphere . util . mesos ....import org ....import scala .... def read ( b
Band-pass high-order analog filter backed hybrid receiver equalization Method and apparatus for passive continuous-time linear equalization with continuous-time baseline wander correction Method and ...
A Kotlin DSL for Android made to display a collection of data-backed views concisely and elegantly. Overview Do you want to show a list of items in Android and wish there was a faster or simpler way? ...
【标题】"AI-Backed-Retards" 这个标题可能是指在某些情况下,人工智能技术可能会导致系统或过程出现意想不到的延迟问题。这可能是由于算法优化不足、计算资源限制或者与其他系统的集成问题所造成的。在AI应用中,...