问题描述 医院表与区县表相关,是多对一的关系,我现在就是想理解如何在页面上通过hospital去显示borough的属性
数据库查询代码:
public List<Hospital> allList(int first, int page) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Transaction ts = session.beginTransaction();
try{
List<Hospital> list = session.createQuery("from Hospital").setFirstResult(first).setMaxResults(page).list();
return list;
}catch(Exception e){
e.printStackTrace();
ts.rollback();
} finally{
HibernateSessionFactory.closeSession();
}
return null;
}
action中调用代码
public String allList(){
int first1=0;
int page = 8;
if(pagebutton==0){
first1=0;
}
else if(pagebutton==1){
first1=first-page;
}
else if(pagebutton==2){
first1=first+page;
}
else if(pagebutton==3){
int i = service.maxPageHospital();
first1 = (((i+page-1)/page)-1)*page;
}
blist = service.getBoroughList();
list = service.allList(first1, page);
this.first = first1;
firstpage = first/page+1;
sum = service.maxPageHospital();
maxpage = (sum+page-1)/page;
tojsp = "Hospital_allList";
return SUCCESS;
}
jsp页面显示代码
  <s:iterator value="list" var="hospital">
               <TR style="FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none">
     <TD><INPUT id="setlist" onClick="check(this,'boxListValue');" type="checkbox" value="<s:property value="#hospital.bid"/>" name="bids"></TD>
                <TD><s:property value="#hospital.name"/></TD>
                <TD><s:property value="#hospital.jb"/></TD>
                <TD><s:property value="#hospital.yhrysl"/></TD>
                <TD><s:property value="#hospital.cwsl"/></TD>
                <TD><s:property value="#hospital.zysbsl"/></TD>
                <TD><s:property value="#hospital.address"/></TD>
                <TD><s:property value="#hospital.getBorough().name"/></TD>
                <TD><A href="<%=path %>/admin/Hospital_updateInput?bid=<s:property value="#hospital.bid"/>">修改</A></TD>
                </TR>
                </s:iterator>
黄色代码是页面没有显示的数据,请各位高手帮忙。
问题:在struts2 iterator标签使用中,如何调用与之相关表的属性

解决方案 »

  1.   

    问题我已经解决 
    第一在jsp页面显示时 
    <s:property value="#hospital.borough.name"/>是显示数据 
    第二在查询时 要注意 不能关闭session 不显示的原因是在查询hospital后我关闭了session 导致查询borough无session
      

  2.   

    hospital.borough 是个集合?<s:select list="adCategoryList" id="adCategory"
    name="ad.adCategory" listKey="id" listValue="name"
    emptyOption="false" headerKey="" headerValue="--请选择--"
    cssStyle="width:auto">
    </s:select>用类似这种方式去显示
      

  3.   

    你的原因是Hibernate延时加载的问题,你可以在mapping文件里设置inverse="false" ,当然这种效率是最低的了,你也可以在用的时候从新查一次,然后用set添加进去。这样你需要什么字段就查什么字段,效率会高些。
      

  4.   

    你没有用spring?  那这个session链接就这么一直占着?
      

  5.   

    是的 暂时我还是不会用Spring 也不知道如何去释放session  求指教