|
该帖已经被评为精华帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2005-09-01
一个失败的例子,请问遇到这种页面上有相同名字的input标记的View(在HttpRequest里面对应itemlist.item.name是数组),Webwork是怎么样将其注入到Action里面的?
View [code:1] <form action="AddItemList.action" method="POST"> <ul> <li> The Item Name:<input type="text" name="itemlist.item.name" value=""> The Item Description:<input type="text" name="itemlist.item.description" value=""> </li> <li> The Item Name:<input type="text" name="itemlist.item.name" value=""> The Item Description:<input type="text" name="itemlist.item.description" value=""> </li> <li> The Item Name:<input type="text" name="itemlist.item.name" value=""> The Item Description:<input type="text" name="itemlist.item.description" value=""> </li> <li> The Item Name:<input type="text" name="itemlist.item.name" value=""> The Item Description:<input type="text" name="itemlist.item.description" value=""> </li> <li> The Item Name:<input type="text" name="itemlist.item.name" value=""> The Item Description:<input type="text" name="itemlist.item.description" value=""> </li> </ul> <input type="submit" value="Submit"> </form> [/code:1] Webwork Action [code:1] public class AddItemListAction extends ActionSupport{ private List itemlist = new ArrayList(); /** * @return Returns the itemlist. */ public List getItemlist() { return itemlist; } /** * @param itemlist The itemlist to set. */ public void setItemlist(List examItemList) { this.itemlist = examItemList; } public String execute() { return SUCCESS; } } [/code:1] Model [code:1] public class Item { private String name; private String description; public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getName() { return name; } public void setName(String name) { this.name = name; } } [/code:1] 原因我大概知道,Webwork并不知道itemlist.item是什么类型,所以无法实现这一级的注入,但是我不知道该怎么写代码来实现。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
搞定了,代码如下
View [code:1] <form action="AddItemList.action" method="POST"> <#assign range=1..5> <ul> <#list range as i> <li> The Item Name:<input type="text" name="itemlist[${i_index}].name" value=""> The Item Description:<input type="text" name="itemlist[${i_index}].description" value=""> </li> </#list> </ul> <input type="submit" value="Submit"> </form> [/code:1] Action [code:1] public class AddItemListAction extends ActionSupport{ private List itemlist; public AddItemListAction() { itemlist = new ArrayList(); for (int i=0;i<5;i++){ itemlist.add(new Item()); } } /** * @return Returns the itemlist. */ public List getItemlist() { return itemlist; } /** * @param itemlist The itemlist to set. */ public void setItemlist(List examItemList) { this.itemlist = examItemList; } public String execute() { return SUCCESS; } } [/code:1] 有个缺陷,就是View和Action存在一定的耦合关系,Action必须知道View上数组的长度。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
看webwork的ww:iterator 的文档
|
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
scud 写道 看webwork的ww:iterator 的文档
我喜欢用freemarker的语法, |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
那就看freemarker的文档.....
<#list itemlist as index> |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
scud 写道 那就看freemarker的文档.....
<#list itemlist as index> 谢谢,已经搞定了,第二个例子就是。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
你不仅没看文档,也没看我回复的内容吗?
|
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
scud 写道 你不仅没看文档,也没看我回复的内容吗?
晕了,Form还没有提交前,<#list itemlist as index>这个会报错吧。 |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
我看错了 sorry :(
我还以为是要显示结果.... 不过你的程序还是可以改进...现在很不好 |
|
| 返回顶楼 | |
|
最后更新时间:2005-09-01
sheing 写道 scud 写道 你不仅没看文档,也没看我回复的内容吗?
晕了,Form还没有提交前,<#list itemlist as index>这个会报错吧。 <#if itemlist?exists> ... </#if> |
|
| 返回顶楼 | |







