| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2767 人关注过本帖
标题:Struts中调用ActionForm的getxxx()方法的疑问
只看楼主 加入收藏
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
不是,一个Action只能有一个表单,但是一个表单可以对应到多个Action

但是你调用是调用Action,Action确定了Action所对应的表单也就确定了,所以在一个WEB提交(submit)中,Action和Form是一对一的关系。

淘宝杜琨
2006-07-21 22:39
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
一个表单可以对应到多个Action
-----------------
既然 在一个WEB提交(submit)中,Action和Form是一对一的关系。
那么,一个表单怎么对应到多个Action呢?

在写语句的时候,不是 <html:form action="/send.do" method="post">

这里 action="/send.do" 它就只能对应一个Action呀,你说的 一个表单可以对应到多个Action 是什么意思呢?
2006-07-21 22:52
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
打个比方:
比如你要写个学生注册的系统,那么我们有学生类
public class Student {
    Integer id;
    String number;
    String name;
    String sex;
}

假设我们系统的功能有两个功能:
1.添加
2.修改

你会发现,这两个功能所提交的字段只有一个不一样,修改的要比添加的多提交一个id字段,而添加功能只要提交number,name,sex就好了。那么你打算怎么写ActionForm和Action呢?

如果你把两个功能各都写各自对应的Form --
public class UpdateStudentForm extends ActionForm{
    Integer id;
    String number;
    String name;
    String sex;
}

public class AddStudentForm extends ActionForm{
    String number;
    String name;
    String sex;
}

你会很无辜的发现,其实这两个根本就查不多一样。
这个时候,你就可以利用一个ActionForm可以对应到多个Action中去。

public class StudentForm extends ActionForm{
    Integer id;
    String number;
    String name;
    String sex;
}

&lt;action name="StudentForm" path="/UpdateStudentAction"/&gt;
&lt;action name="StudentForm" path="/AddStudentAction"/&gt;

看见了吧,我们就把StudentForm对应到多个Action中去了

淘宝杜琨
2006-07-21 23:30
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
<action name="StudentForm" path="/UpdateStudentAction"/>
<action name="StudentForm" path="/AddStudentAction"/>
---------------------------
这是在配置文件中要这么写,可是在jsp页面中要怎么写才能定义一个表单分别对应UpdateStudentAction和AddStudentAction 这两个Action呢?

就像这种:<html:form action="/send.do" method="post">

2006-07-22 06:31
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
不可能

淘宝杜琨
2006-07-22 08:07
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 

那ActionServlet它不就是根据 action="/xxx.do" 到配置文件中去找Action的parth的吗,既然 不可能,那ActionServlet是如何确定此时应该调用哪个Action呢?


2006-07-22 08:57
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
通过配置文件呀

&lt;action name="StudentForm" path="/AddStudentAction"/&gt;
这样你就必须要调用 action = "AddStudentAction.do"

如果你的配置是
&lt;action name="StudentForm" path="/InsertStudent"/&gt;
那么你就要调用 action = "InsertStudent.do"

后面那.do是在你项目的web.xml中配置的,我就经常不用.do,用.asp来迷惑人家

淘宝杜琨
2006-07-22 09:21
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
那 action = "AddStudentAction.do"跟 action = "InsertStudent.do" 是写在哪里的,不是在jsp页面里吗?
2006-07-22 13:52
Grace_TT
Rank: 1
等 级:新手上路
威 望:1
帖 子:324
专家分:0
注 册:2005-12-21
收藏
得分:0 
我现在就琢磨不出来,这一个表单在jsp页面里要如何写代码才能实现到配置文件里去找相应的Action呢?
2006-07-22 13:55
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
action = "AddStudentAction.do" 是写在HTML里面的

一个表单是不能自己找到想去的Action的,而是由Action自己寻找自己需要的表单。

淘宝杜琨
2006-07-22 14:08
快速回复:Struts中调用ActionForm的getxxx()方法的疑问
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016464 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved