|
这个主题共有 25 回复 / 2 页 [
1 2
下一页
]
|
|
|
|
|
|
关于 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了,,, 象这样的问题一直都困扰我很久, 不知道大家有什么好的思路.
|
|
|
|
|
|
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,也只能帮点小忙。
|
|
|
|
|
|
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 //.... }
但是,我强调的是一个页面有多个版主,这种情况是比较复杂了点,, 不知道大家有什么好的想法!
|
|
|
|
|
|
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.
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月25日 13:11
|
回复
|
|
我是采取Tiles,将页面分成几个组件子页面,每个子页面对应不同的ActionForm,这个思路非常类似Tapestry。
这样做的最大好处是可以显示处理清晰,互相不影响,进而达到显示组件的重用。不知对你是否有借鉴作用?
|
|
|
|
|
|
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]; }
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月26日 14:43
|
回复
|
|
如果仅仅实现此功能,有必要放那末多的 submit吗 另外,这个问题基本上任何信息系统都会碰到,html element多个同名提交是作为数组存在,这个应该比较清楚如何处理了吧。
|
|
|
|
|
|
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域。
|
|
|
|
|
|
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>
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月27日 17:17
|
回复
|
|
个人一直使用类似skyyjck的方法. 利用JAVASCRIPT来控制DISPATCHACTION的入口, JSP只是各个DISPATCHACTIONS之间的连接.
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月27日 20:21
|
回复
|
|
呵呵,感谢大家给于帮助,,特别是感谢 Banq 对这个问题的重视。还有 skyyjck,使困扰很久的问题得到了“解决之道”! ----->"解道"
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月28日 11:49
|
回复
|
|
|
你“提交”给处理器的始终是“数据”(form)+“命令”(action),从你的情款看来,你的“提交”很多,但又想通过尽量少的“数据”(form)+“命令”(action)来完成处理,我建议你一个"提交"对应一套“数据”(form)+“命令”(action)。。因为他们本身就是1...1...1的关系,这样分离的好处显而易见的,纠错容易,扩展方便
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年10月28日 23:07
|
回复
|
|
其实很简单,不要用那么多提交的按钮,只用一个,提交按钮的地方放checkbox。 提交的时候只要知道选中的checkbox的值就行了
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年11月02日 17:35
|
回复
|
|
|
我是先设计一个接口model然后各个form继承这个model,就把很多的form与action的依赖关系给IOC 了.
|
|
|
|
|
|
Re: 关于 ActionForm 的设计问题
|
发表: 2004年11月06日 10:23
|
回复
|
|
我对这种页面没有对应到ActionForm。
实际它所表示的就是一个,或多个一对多的关系。 页这种关系又可以用OO的方式所表示它的模型。
所以用一个JSP页面来动态生成这样的页面列表。取得页面数据MAP。对数据进行分析。以字段对应的方式,存储到数据库中。关系是一个或多个一对多!
不过我觉得“组合视图”应该是最OO的解决方法了!
|
|
|
|
|
|
这个主题有 25 回复 / 2 页 [
1 2
下一页
]
|
|
|