日期:2014-05-18  浏览次数:20784 次

<s:iterator>标签 ,一对多用法求解
Area与Project是一对多关系      SSH框架用<s:iterator>标签时,如何通过一查出多,或多查出一

Area.java
public class Area {
private int id;
private String name;
private Set<Project> project=new HashSet<Project>();

Area.hbm.xml
<set name="project" inverse="true" cascade="all,delete-orphan"  lazy="false">
<key>
<column name="area_id" precision="22" scale="0" not-null="true" />
</key>
<one-to-many class="com.paiwei.site.entity.Project" />
</set>

Project.java
public class Project {	
    private int id;
private String name;
private Area area;

Project.hbm.xml
		<many-to-one name="area" class="com.paiwei.site.entity.Area" fetch="select" lazy="false">
<column name="area_id" precision="255" scale="0" />
</many-to-one>


后台request.setAttribute("projectList", projectList);
request.setAttribute("areaList", areaList);

前台
 <s:iterator value="#request.projectList" id="Project">
        <tr>
          <td>${name}!!! <s:property  value="#Project.area.name" /></td>        
 </s:iterator>


<s:property  value="#Project.area.name" />无法显示
<s:iterator value="#request.areaList" id="Area" >
        <tr>
        <s:iterator value="#Area.project" id="projects">
          <td> <s:property  value="#projects.name" /></td>
           </s:iterator>
          <td>${name}!!!<s:property  value="#Area.project.name" />???<s:property  value="#Area.name" /></td>
        </tr>
        </s:iterator>
<s:property  value="#Area.project.name" />


红色部分无法显示,请问各位,应该怎么写才对,配置文件是不是配得有问题fetch部分,不过换了几个配置还是出不来,忘大伙解答下,多谢
------解决方案--------------------
红色的部分要写到 ,迭代标签里面,因为Area 是迭代出来的 ,
------解决方案--------------------
你那个 project 也是一个list,而不是一个对象,因此,输出需要 用迭代
------解决方案--------------------
  <s:if test="#a.id==#b.areaI"> 
          <td> <s:property  value="#projects.name" /></td>,这里都没</s:if>。你在加一个<s:else>aaaa</s:else>,看是否是判断有问题啊。。。。。。