Struts2 标签实现 多对多查询显示
嵌套遍历
有这样一个关系
博客的日志 Entry表、日志分类表Category表 、
还有一个中间表Entry_Category表分别是日志表主键和分类表的主键,又同时作为外键关联。
中间表在SSH框架逆向生成的时候并没有生成实体类。
在页面显示时 要 遍历日志的同时还要遍历日志的分类,
可以用到Struts2的<s:iterator>标签进行嵌套输出。
最外层的Value属性内是 request、session、application内的集合对象,id属性为 具体对象
内层的value属性为 具体对象内属性名(要和实体类内属性名一致),
最后通过<s:propertyvalue=”set 集合对象内的属性名” /> 输出
首先导入标签库
<%@ taglib uri="/struts-tags" prefix="s" %>
利用
<s:iterator value="list" id="entry">
<s:iterator value="blogCategories" >
<s:property value="name"/>
</s:iterator>
</s:iterator>
实体日志bean
publicclass BlogEntry implements java.io.Serializable {
// Fields
private Long id;
private BlogUser blogUser;
private String title;
private String summary;
private String content;
private Date modifytime;
private Date posttime;
private String postip;
private Integer hits;
private Integer commensize;
private String entrystatus;
private Set blogComments = new HashSet(0);
private Set blogCategories = new HashSet(0);
实体类 日志类型
publicclass BlogCategory implements java.io.Serializable {
// Fields
private Long id;
private String name;
private String description;
private Integer defaultcategory;
private Date createtime;
private Set blogEntries = new HashSet(0);
要将延迟加载设置为 取消 lazy="false"
BlogEntry.hbm.xml 配置文件
<set name="blogComments"inverse="true" lazy="false">
<key>
<column name="ENTRYID" precision="10"scale="0" not-null="true"/>
</key>
<one-to-many class="com.tc.entity.BlogComment" />
</set>
<set name="blogCategories" table="BLOG_ENTRY_CATEGORY" schema="WANG" lazy="false">
<key>
<column name="ENTRYID" precision="10"scale="0" not-null="true"/>
</key>
<many-to-many entity-name="com.tc.entity.BlogCategory">
<column name="CATEGORYID" precision="10" scale="0"not-null="true" />
</many-to-many>
</set>
BlogCategory.hbm.xml配置文件
<set name="blogEntries"inverse="true" table="BLOG_ENTRY_CATEGORY"schema="WANG" lazy="false">
<key>
<column name="CATEGORYID" precision="10" scale="0"not-null="true" />
</key>
<many-to-many entity-name="com.tc.entity.BlogEntry">
<column name="ENTRYID" precision="10"scale="0" not-null="true"/>
</many-to-many>
</set>