怪异Struts Logic Iterator Tag问题 名字写的不对吧,name的名字要和Action中request.setAttribute的名字一致,还有type中没有包名可以吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 给你一个例子 参考一下http://www.javawebstudio.com/html/instance/in9_db.htm 请仔细检查你自己的程序,OrderForm FormBean的代码:public final class OrderForm extends ActionForm { private String sCustomerName = ""; private String sPlate = ""; private String sMake = ""; private String sMillage = ""; private List lstOrderLines; public List getOrderLines(){ return lstOrderLines; }仔细看这里,你的属性是lstOrderLines,但是你的get ,set方法里确实getOrderLines,属性都不对应呀!这是一个问题,另外,还有一个问题我看得不是很清楚,你的这个lstOrderLines 属性是 List类型的,但是你却在 <logic:iterate id="lines" name="OrderForm" property = "orderLines" type = "OrderLineForm">这里要将它造型成OrderLineForm类型的,这样不对!或许你的意思是List中的每一个元素是OrderLineForm类型的,但是得有另外的写法。-------------------------问题很多,请仔细检查! ActionForm.lstOrderLines 的get ,set 方法名字错误,getOrderLines(),setOrderLines()应该修改为 getLstOrderLines(),setLstOrderLines()奇怪,你竟然不使用Eclipse自动生成的功能!!!白白浪费时间调试这些不必要的错误。 zeq258(近朱者赤):你说的是,确实是在List中的每个元素是OrderLineForm。那么如何写法? 只要jsp中Struts tag的属性名称与FormBean的getter, setter相对应就可以,比如:<bean:name="MyFormBean" property="abc">abc在MyFormBean中必须有getAbc()和setAbc(),至于在MyFormBean中如何定义 private sABC 还是 private sabc, 还是abc,应该没有任何关系吧?我这里的问题是:如何iterate一个master-deatail关系的数据:把detail的数据保存到一个List中,在jsp中利用Logic:Iterator的tag显示该detail数据对象。 删掉你的type = "OrderLineForm" 只要jsp中Struts tag的属性名称与FormBean的getter, setter相对应就可以,比如:<bean:name="MyFormBean" property="abc">abc在MyFormBean中必须有getAbc()和setAbc(),至于在MyFormBean中如何定义 private sABC 还是 private sabc, 还是abc,应该没有任何关系吧?-------------------------------------------------------------------是有关系的,第一个第二个字母都不能使大写。 SSH 拦截器响应但是页面不跳转 html使用ajax+cookie session会丢失??改为jsp就可以了-诡异!!! 解释下简单的hibernate语句 Struts ActionForm 在Hibernate中如何将两张表映射为一对一的关系 (Hibernate)请问关于表结构完全相同的表的增删改查询 Hibernate大数据量问题 关于s:iterato的解释 如何写此类? tomcat 安装问题? 新手关于J2EE的问题 部署EJB的初级问题
http://www.javawebstudio.com/html/instance/in9_db.htm
OrderForm FormBean的代码:
public final class OrderForm extends ActionForm {
private String sCustomerName = "";
private String sPlate = "";
private String sMake = "";
private String sMillage = ""; private List lstOrderLines; public List getOrderLines(){
return lstOrderLines;
}仔细看这里,你的属性是lstOrderLines,但是你的get ,set方法里确实getOrderLines,
属性都不对应呀!
这是一个问题,另外,还有一个问题我看得不是很清楚,你的这个lstOrderLines 属性是 List类型的,但是你却在
<logic:iterate id="lines"
name="OrderForm"
property = "orderLines"
type = "OrderLineForm">
这里要将它造型成OrderLineForm类型的,这样不对!或许你的意思是List中的每一个元素是OrderLineForm类型的,但是得有另外的写法。-------------------------
问题很多,请仔细检查!
getOrderLines(),setOrderLines()
应该修改为 getLstOrderLines(),setLstOrderLines()奇怪,你竟然不使用Eclipse自动生成的功能!!!
白白浪费时间调试这些不必要的错误。
你说的是,确实是在List中的每个元素是OrderLineForm。那么如何写法?
<bean:name="MyFormBean" property="abc">
abc在MyFormBean中必须有getAbc()和setAbc(),至于在MyFormBean中如何定义
private sABC 还是 private sabc, 还是abc,应该没有任何关系吧?我这里的问题是:如何iterate一个master-deatail关系的数据:把detail的数据保存到一个
List中,在jsp中利用Logic:Iterator的tag显示该detail数据对象。
<bean:name="MyFormBean" property="abc">
abc在MyFormBean中必须有getAbc()和setAbc(),至于在MyFormBean中如何定义
private sABC 还是 private sabc, 还是abc,应该没有任何关系吧?
-------------------------------------------------------------------
是有关系的,第一个第二个字母都不能使大写。