(在线痴等)同志们 快来救命啊? 出现这个错误

classlj 2010-06-28 12:51:22
下面是错误提示: 说没get方法 我吧代码都发下吧 页面成白色的了

javax.servlet.jsp.JspException: No getter method for property: "subitems" of bean: "list"


JSP页面
<body>

<center>
<jsp:include flush="true" page="/template.jsp"/>
<h2>提问板块</h2> 欢迎:<font color="red">${forms.userid}</font><br>


<logic:present name="list" scope="request">
<logic:iterate id="item" scope="request" name="list">
${item.itemname}
<logic:iterate id="sub" name="list" property="subitems" >
${sub.subname}
</logic:iterate>

</logic:iterate>

</logic:present>


</center>
</body>




下面2个是映射类

-------------------------------------------------

package moxing;

import java.util.Set;

public class Item {

private int itemid;

private String itemname;

private int itemcode;

private Set subitems;

public Set getSubitems() {
return subitems;
}

public void setSubitems(Set subitems) {
this.subitems = subitems;
}

public int getItemid() {
return itemid;
}

public void setItemid(int itemid) {
this.itemid = itemid;
}

public String getItemname() {
return itemname;
}

public void setItemname(String itemname) {
this.itemname = itemname;
}

public int getItemcode() {
return itemcode;
}

public void setItemcode(int itemcode) {
this.itemcode = itemcode;
}

}




package moxing;


public class Subitem {
private int subid ;
private String subname ;
private int itemid ;
private int subcode ;
private Item item ;
public int getItemid() {
return itemid;
}
public void setItemid(int itemid) {
this.itemid = itemid;
}
public int getSubid() {
return subid;
}
public void setSubid(int subid) {
this.subid = subid;
}
public String getSubname() {
return subname;
}
public void setSubname(String subname) {
this.subname = subname;
}
public Item getItem() {
return item;
}
public void setItem(Item item) {
this.item = item;
}
public int getSubcode() {
return subcode;
}
public void setSubcode(int subcode) {
this.subcode = subcode;
}
}



下面是映射配置文件
-------------------------------------------------------

<hibernate-mapping package="moxing">
<class name="Item" table="item">
<id name="itemid" type="java.lang.Integer">
<column name="itemid" />
<generator class="native" />
</id>
<property name="itemname" type="java.lang.String">
<column name="itemname" length="50" />
</property>
<property name="itemcode" type="java.lang.Integer">
<column name="itemcode" />
</property>
<set name="subitems" inverse="true" cascade="all" lazy="true">

<key>
<column name="itemid" />
</key>
<one-to-many class="Subitem" />
</set>
</class>
</hibernate-mapping>





<hibernate-mapping package="moxing">
<class name="Subitem" table="subitem">
<id name="subid">
<generator class="native"></generator>
</id>
<property name="subname"></property>
<property name="subcode"></property>

<many-to-one name="item" class="Item">
<column name="itemid" />
</many-to-one>

</class>


</hibernate-mapping>


大家帮我揣摩下 谢谢

...全文
109 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Octer 2010-06-28
  • 打赏
  • 举报
回复
改成:
<logic:iterate id="sub" name="item" property="subitems" >
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 classlj 的回复:]

引用 1 楼 octer 的回复:
改成:
<logic:iterate id="sub" name="item" property="subitems" >


出现这个错误了

failed to lazily initialize a collection of role: moxing.Item.subitems, no session or session was clo……
[/Quote]

这个估计就是延迟加载的问题,我对 Hibernate 不熟,接下来帮不了你了。建议你使用 LEFT JOIN FETCH 进行强制加载。
优秀APP开发 2010-06-28
  • 打赏
  • 举报
回复
name是actionform名吧?而且你的many-to-one也要设置成懒加载。不然怎么取噢。。
classlj 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lovehuazi 的回复:]
那是应为延迟加载的缘故...

<set name="subitems" inverse="true" cascade="all" lazy="false">
你试试...不过,你问的问题是这个意思么?
[/Quote]


我看看哈
lovehuazi 2010-06-28
  • 打赏
  • 举报
回复
那是应为延迟加载的缘故...

<set name="subitems" inverse="true" cascade="all" lazy="false">
你试试...不过,你问的问题是这个意思么?
classlj 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 octer 的回复:]
改成:
<logic:iterate id="sub" name="item" property="subitems" >
[/Quote]

出现这个错误了

failed to lazily initialize a collection of role: moxing.Item.subitems, no session or session was closed
lovehuazi 2010-06-28
  • 打赏
  • 举报
回复
struts1标签好像不支持这样用吧..楼主可以在后台直接把subitems这个set集合保存到和list一个作用域下用list1表示,然后再前台显示不就行了....
<center>
<jsp:include flush="true" page="/template.jsp"/>
<h2>提问板块</h2> 欢迎:<font color="red">${forms.userid}</font><br>


<logic:present name="list" scope="request">
<logic:iterate id="item" scope="request" name="list">
${item.itemname}
<logic:iterate id="sub" name="list1" scope="request">
${sub.subname}
</logic:iterate>

</logic:iterate>

</logic:present>


</center>
xcehn 2010-06-28
  • 打赏
  • 举报
回复
好吧 楼上正解
  • 打赏
  • 举报
回复
Struts 1 的标签很难用的,特别是 logic:iterator,你试试改用 JSTL 看看:

<c:forEach items="${list}" var="sub">
<c:out value="${sub.subname}" />
</c:forEach>

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧