jdon 解惑授道,企业信息化解决之道
 

热点Tag: AOP cache DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Spring Struts

Jdon框架演示

JiveJdon3.0
源码下载

GoF设计模式

在线教程

社区精彩讨论












关于 ActionForm 的设计问题

作者:xuesenlin 发表时间:2004年10月16日 18:12 回复此消息回复

原贴网址: http://www.jdon.com/jivejdon/thread/17088.html

记得以前刚刚用 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了,,,
象这样的问题一直都困扰我很久, 不知道大家有什么好的思路.

Re: 关于 ActionForm 的设计问题 发表: 2004年10月17日 09:43 回复
linux_china 发表文章: 28/ 注册时间: 2004年08月24日 16: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,也只能帮点小忙。

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

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


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

Re: 关于 ActionForm 的设计问题 发表: 2004年10月21日 03:06 回复
jakarta99 发表文章: 77/ 注册时间: 2003年09月13日 20:53
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.



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

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

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


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

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

Re: 关于 ActionForm 的设计问题 发表: 2004年10月27日 16:32 回复
skyyjck 发表文章: 7/ 注册时间: 2004年10月27日 16:25
用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域。

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



<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>

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

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

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

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

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

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

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

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

不过我觉得“组合视图”应该是最OO的解决方法了!

这个主题共有 25 回复 / 2 页 [ 1 2 下一页 ]
 
上一篇: JSP在Eclipse中调试时说 "(.. 下一篇: "Spring 1.x无容器Sessio..
 
查询本论坛 最热门帖子
快速发表回复:
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 
联系我们 | 关于我们 | RSS订阅 | 广告联系 | 网站地图 | 设为首页
Copyright (C) 2002-2007 Jdon.com, All Rights Reserved 版权所有 上海解道计算机技术有限公司
沪ICP备05018152号 如有意见请与我们联系 Powered by JdonFramework