JiveJdon Community Forums
在线294人 Home | 论坛 | 培训咨询 | 精华 | 查搜 | 注册 | 登陆 |
首页 » 论坛 » J2EE/JavaEE/JEE/EJB/JSF等技术讨论
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表
???en_US.forumThreadNext.name??? 下一主题
这个主题共有 25 回复 / 2 页 [ 1 2 下一页 ]  发表新帖子  回复该主题贴
xuesenlin

发表文章: 30
注册时间: 2003年09月15日 16:53
给他发消息
关于 ActionForm 的设计问题 发表: 2004年10月16日 18:12 回复
记得以前刚刚用 JSP 的时候, 在 JSP ,Servlet 中光光是的参数是传递就折磨了够呛,还好, 自从用了Struts 以后,很少在这方面担忧了,但是新的问题又随之而来了,对应一些功能比较多,复杂的界面,你的ActiomForm怎么设计: 就比如下面这张截图


注意这里是分页显示的, 所以图中版主是在一个循环里面输出的,还要主要每一个版主后面有一个"设置生效"submit,好的,就这种情况,怎么设置ActionForm ? 刚刚开始想以整个table 为一个ActionForm ,然后用他的List,Map属性来接受,接着想到了,不对! 对于每一个独立的版主,你对他管理的资源进行权限分配了以后, 点击Sumbit提交了,就会把其他的,不属于该版主的(其他版主)信息也提交上去,别说你在Action中处理时将其他的版主置之不理,就说你如何分辨出哪些是你设置的版主的信息都很难!
况且还提交了一些无用的数据.

当然还可以以一行为一个ActionForm,但是由于是分页显示,数据是循环输出的, 如果你的<html:form ...></html:form>是在循环内的, 那么出来的这些<form />是同名的, 虽然写的时候可以通过id 的递增来给Form命名, 但是我发现,Struts中<html:form />标签生成的form始终跟Struts-config.xml 中的action-mappings 元素中的 name属性或是attribute属性(优先)同名,已经写死了,可见不能生成递增的,不同的form.

就退一步来讲, 即使能在页面生成连续几个不同的form,型如:

<form name="form1" action=".." />
<form name="form2" action=".." />
<form name="form n" action=".." />
你的ActionForm 又如何设计? 总不能这样有相应的ActionForm1,ActionForm2,ActionForm3......吧...
..直到现在也不知道怎么设计上面这个ActionForm了,,,
象这样的问题一直都困扰我很久, 不知道大家有什么好的思路.
linux_china

发表文章: 28
注册时间: 2004年08月24日 16:43
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月17日 09:43 回复
这个问题我也遇到过的,其实这是一个Master/Detail的模式,有点想采购订单或发票,有主要字段信息,有Detail信息,detail主要是多行记录。在Struts中可以采用MapForm来处理,而且比较方便,我当时使用就是JSTL+MapForm处理,可能你这个情况比我的更复杂些,不过你可以在MapForm中扩展你的功能。至于分页,我个人认为这和Form无关,主要是Action处理完毕后,通知Jsp页面有无相关的分页信息就可以啦。
这是我写的文章,或许对你有点帮助: http://www.jetmaven.net/documents/j_mapformInStruts.php
如果你有问题可以和我联系,msn: linux_china@hotmail.com,也只能帮点小忙。
xuesenlin

发表文章: 30
注册时间: 2003年09月15日 16:53
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月18日 18:04 回复
看了Linux_china写的文章, 感觉不错, 但是这个目前还是不知道如何处理,当然,如果界面上只有一个版主,旗下面就是他的访问资源和权限,如果翻到第二页就是另一个独立的 版主,这样,每一页就是一个版主,
按照Linux_china的那种方式 可以作出来, 可以下面的ActionForm:

public class EditorActionForm extends ActionForm{
private int editor_id;
private int editor_name;
private Map resource;
//set get
//....
}


但是,我强调的是一个页面有多个版主,这种情况是比较复杂了点,,
不知道大家有什么好的想法!
jakarta99

发表文章: 77
注册时间: 2003年09月13日 20:53
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月21日 03:06 回复
It's ez, because u modify one row data, not multi-rows datas.

just use "ONE" actionForm for all datas.

just use a hidden input named "uid", when u onchange the forum-list options, u should set the hidden "uid" as the focus. and to set other values in hidden objects by javascript.



banq

发表文章: 9114
注册时间: 2002年08月03日 17:08
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月25日 13:11 回复
我是采取Tiles,将页面分成几个组件子页面,每个子页面对应不同的ActionForm,这个思路非常类似Tapestry。

这样做的最大好处是可以显示处理清晰,互相不影响,进而达到显示组件的重用。不知对你是否有借鉴作用?
ccmoon

发表文章: 27
注册时间: 2003年01月02日 15:43
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月26日 10:39 回复
private String[] accountID = new String[12];
/**
* Returns the accountID.
* @return String[]
*/
public String[] getAccountID() {
return accountID;
}


public String getAccountID(int index) {
return accountID[index];
}
watte

发表文章: 2
注册时间: 2003年06月08日 11:23
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月26日 14:43 回复
如果仅仅实现此功能,有必要放那末多的 submit吗
另外,这个问题基本上任何信息系统都会碰到,html element多个同名提交是作为数组存在,这个应该比较清楚如何处理了吧。
skyyjck

发表文章: 7
注册时间: 2004年10月27日 16:25
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月27日 16:32 回复
用Javascript来处理应该比较方便

<form name="testForm" action="....">
<input type="hidden" name="subBoardName" value="">
<input type="hidden" name="checkbox1" value="">
<input type="hidden" name="checkbox2" value="">
<input type="hidden" name="checkbox3" value="">
<input type="hidden" name="checkbox4" value="">
<input type="hidden" name="id" value="">
</form>

<script>
function submitForm(){
document.subBoardName.value = ...
document.checkbox1.value = document.XXX.selected
.........
testForm.submit();
}
</script>

你在点击submit按钮的时候,调用这个函数,提交那个Form就行了。那个Form可以放在页面中任何一个地方,反正全部都是hidden域。
skyyjck

发表文章: 7
注册时间: 2004年10月27日 16:25
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月27日 16:35 回复



<form name="testForm" action="....">
<input type=
"hidden" name="subBoardName" value="">
<input type=
"hidden" name="checkbox1" value="">
<input type=
"hidden" name="checkbox2" value="">
<input type=
"hidden" name="checkbox3" value="">
<input type=
"hidden" name="checkbox4" value="">
<input type=
"hidden" name="id" value="">
</form>

<script>
function submitForm(){
document.subBoardName.value = ...
document.checkbox1.value = document.XXX.selected
.........
testForm.submit();
}
</script>

leeson1125

发表文章: 4
注册时间: 2004年10月26日 01:02
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月27日 17:17 回复
个人一直使用类似skyyjck的方法.
利用JAVASCRIPT来控制DISPATCHACTION的入口, JSP只是各个DISPATCHACTIONS之间的连接.
xuesenlin

发表文章: 30
注册时间: 2003年09月15日 16:53
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月27日 20:21 回复
呵呵,感谢大家给于帮助,,特别是感谢 Banq 对这个问题的重视。还有
skyyjck,使困扰很久的问题得到了“解决之道”! ----->"解道"
amonlei

发表文章: 1
注册时间: 2004年10月14日 17:37
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月28日 11:49 回复
你“提交”给处理器的始终是“数据”(form)+“命令”(action),从你的情款看来,你的“提交”很多,但又想通过尽量少的“数据”(form)+“命令”(action)来完成处理,我建议你一个"提交"对应一套“数据”(form)+“命令”(action)。。因为他们本身就是1...1...1的关系,这样分离的好处显而易见的,纠错容易,扩展方便
yesu

发表文章: 1
注册时间: 2003年06月26日 16:25
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年10月28日 23:07 回复
其实很简单,不要用那么多提交的按钮,只用一个,提交按钮的地方放checkbox。
提交的时候只要知道选中的checkbox的值就行了
anonymous

发表文章: 0
注册时间:
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年11月02日 17:35 回复
我是先设计一个接口model然后各个form继承这个model,就把很多的form与action的依赖关系给IOC 了.
billywxy

发表文章: 20
注册时间: 2003年11月07日 08:08
给他发消息
Re: 关于 ActionForm 的设计问题 发表: 2004年11月06日 10:23 回复
我对这种页面没有对应到ActionForm。

实际它所表示的就是一个,或多个一对多的关系。
页这种关系又可以用OO的方式所表示它的模型。

所以用一个JSP页面来动态生成这样的页面列表。取得页面数据MAP。对数据进行分析。以字段对应的方式,存储到数据库中。关系是一个或多个一对多!

不过我觉得“组合视图”应该是最OO的解决方法了!
这个主题有 25 回复 / 2 页 [ 1 2 下一页 ]
???en_US.forumThreadPrev.name??? 上一主题
Go back to the topic listing   返回主题列表    返回页首  返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts
查询本论坛内 回复超过的热门帖子
快速发表回复
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com

anti spam