有两个表材料编码表:材料大类编码表:
material_big_coding
{
int mbcId identity,
mbcName varchar(30),
}材料编码表:
material_coding
{
int mcId identity,
fk 引用材料大类编码表(mbcId)
}hibernate生成的实体为:public class MaterialBigCoding {
private Integer mbcId;
private String mbcName;
}

public class material_coding{
            private Integer ID;
            private MaterialBigCoding materialBigCoding;
}在Action中public class MyAction{
 @Resource//用spring注入的属性
 private subMaterialDao subMaterialDao; private List<material_coding> mcList;
 
 public String execute(){
   mcList=subMaterialDao.findAll();
   return SUCCESS;
 } 
}跳转到的jsp页面上想用struts2的标签输出每个材料编码对应的大类名称,怎么输出?<s:iterator value="mcList" >
  <s:property value="ID" />
  <s:property value="materialBigCoding.mbcName" />//这样写不能输出
  <s:property value="materialBigCoding.mbcId" />//但是这样写却能输出他对应的ID
</s:iterator>请问怎么回事

解决方案 »

  1.   

    private List<material_coding> mcList;
    public String execute(){
      mcList=subMaterialDao.findAll();
      return SUCCESS;
     }  
    属性和方法很明确,你查到的一是集合,是一个list
    <s:property value="materialBigCoding.mbcName" />
    这样写,当然取不到list里面的值,需要在前台循环。
    比如你查到了一个user的list实体,里面有两个属性,name和pswd:
    可以这样写:
    <table>
           <tr>
                 <td>姓名</td>
                 <td>密码</td>
           </tr>
    <s:iterator value="user" var="u">
            <tr>
                 <td>${u.name}</td>
                 <td>${u.pswd}</td>
           </tr>
    </s:iterator>
    </table>
      

  2.   

    list放的是material_coding,不是MaterialBigCoding
    material_coding没有name属性
      

  3.   

    user是一个list,而u是user里面的每一个,不知道我说的明白不?