我现在做的一个工程
ActionForm里有List,list对应一个Bean。list的个数是变化的。
例程序(实际工程理jsp页面有10个textbox这里只是举例)
JSP (Xx.jsp)
<html:form action="/xxAction">
<logic:iterate id="item" name="xxList">
<html:text name="item" property="key" indexed="true" />
<html:text name="item" property="val" indexed="true" />
</logic:iterate>
<html:submit>送信<html:submit>
</html:form>
ActionForm
public class XxActionForm extends ActionForm {
private ArrayList list = new ArrayList();
public XxActionForm() {
for (int i = 0; i < 30; i++) {
Bean bean = new Bean();
list.add(bean);
}
public void setItem(int index, Bean bean) {
list.add(index, bean);
}
public Bean getItem(int index) {
return (Bean)list.get(index);
}
}
现在出错的地方就是当bean的个数从31变到比31小的数字的时候(例如31->30)就会出现
javax.servlet.ServletException: BeanUtils.populate
org.apache.struts.util.RequestUtils.populate(RequestUtils.java:497)
org.apache.struts.action.RequestProcessor.processPopulate(RequestProcessor.java:798)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:205)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
的错误。
我查了好久,觉得是ActionForm初始化的时候初始数值是30的问题。可是在Action里面new 一个ActionForm,这个初始化的ActionForm初始值设成像要的数比如29,但也同样会出错。谁给点意见
------解决方法--------------------------------------------------------
List 并不一定要ActionForm来组装。
<html:text name="item" property="key" indexed="true" /> name和property怎么能放在一起呢?
------解决方法--------------------------------------------------------
只能取回String Array的数据,取不回list吧。BeanUtils也只封装到数组的程度。
------解决方法--------------------------------------------------------
我认为你的设计有问题啊
一个数据库查询的struts大概有这些文件:
View:
dblist.jsp,
dblistout.jsp
Model:
DblistForm
Controller:
DBlistAction
然后是你的DAO and PO: