我使用的是truts2+hibernate框架 
有一个老师表和一个题目表,老师和题目是 1:n是关系
我想在页面上显示课程属性的时候,应该怎样显示该课程所对应的老师的名称?问号里填写什么呢?谢谢! 
Teacher类为: 
public class Teachers  implements java.io.Serializable {         private Integer teaId; 
private String loginname; 
        private Set subjectinfos = new HashSet(0); 
        .... 
      } Subjectinfo 类为: 
public class Subjectinfo  implements java.io.Serializable { 
private Integer subId; 
private Teachers teachers; 
private String subName; 
private String subType; 
... 
    } Teachers.hbm.xml为: 
.... 
<set name="subjectinfos" inverse="true"> 
            <key> 
                <column name="tea_id" not-null="true" /> 
            </key> 
            <one-to-many class="hibernate.model.Subjectinfo" /> 
        </set> 
..。} 
Subectinfo.hbm.xml为: 

... 
<many-to-one name="teachers" class="hibernate.model.Teachers" fetch="select"> 
            <column name="tea_id" not-null="true" /> 
        </many-to-one> 
... 
}    
页面显示: 
                  <td> <s:property value="subName"/> </td> 
        <td> <s:property value="subType"/> </td> 
<td> <s:property value=" ???????????????????????????????????????????????????? "/> </td 

解决方案 »

  1.   

    我学过但老师没讲,struts1 的我知道,期待我觉得应该和struts1一样,ongl标签不是也有个其他什么模式了吗,
      

  2.   

    我使用的是truts2+hibernate框架
    有一个老师表和一个题目表,老师和题目是 1:n是关系Teacher类为:
    public class Teachers  implements java.io.Serializable {        private Integer teaId;
            private String loginname;
            private String teaName;
            private Set subjectinfos = new HashSet(0);
            ....
          }Subjectinfo 类为:
    public class Subjectinfo  implements java.io.Serializable {
    private Integer subId;
    private Teachers teachers;
    private String subName;
    private String subType;
    ...
        }Teachers.hbm.xml为:
    ....
    <set name="subjectinfos" inverse="true">
                <key>
                    <column name="tea_id" not-null="true" />
                </key>
                <one-to-many class="hibernate.model.Subjectinfo" />
            </set>
    ..。}
    Subectinfo.hbm.xml为:
    {
    ...
    <many-to-one name="teachers" class="hibernate.model.Teachers" fetch="select">
                <column name="tea_id" not-null="true" />
            </many-to-one>
    ...
    }   
    页面显示:
                      <td> <s:property value="subName"/> </td>
            <td> <s:property value="subType"/> </td>
    <td> <s:property value=" teachers.teaName "/> </td 
    teachers.teaName 这个语句为什么不能显示出老师名字呢????????????? 
    首先:href="subjectall.action"
    truts.xml:
    <action name="subjectall" class="struts2.action.SubjectInfoAction" method="FindAllSubject">
    <result name="success">/students/subject/subjectList.jsp</result>
    <result name="error">/error.jsp</result>
    </action>
    SubjectInfoAction类:
    {
       private Teachers teachers ;
       private String subName ;
       private String subType ;   private int t_totalpage;
       private int currentpage;
       private List list;
       ....省略get set
       public String FindAllSubject() throws Exception{
    try{
    AllSubjectUtil page = new AllSubjectUtil();
    String hql = "from Subjectinfo" ;
            list = page.QueryList(hql) ;
    this.t_totalpage=page.totalPage;
    this.currentpage=page.currentPage;
    return SUCCESS ;
    }catch(Exception e){
    e.printStackTrace() ;
    return ERROR ;
    }
    }
    }
    AllSubjectUtil 类为:
    public class AllSubjectUtil extends ActionSupport {
    private Session s = null;
    private List list;
    public static int totalPage;// 页面总数
    private int totalCount;// 用户总数
    private int pageSize;// 每页显示数据量
    public static int currentPage;// 当前页码数 public AllSubjectUtil() {

    this.s = HibernateSessionFactory .createSession() ;
    } /*
     * 功 能:获取总记录数 参 数:持久化对象名 返回值:int
     */
    public int getUserTotalCount(String tablename) {

    Query q = s.createQuery("select count(*) from " + tablename );
    List ll = q.list();
    Integer a = (Integer) ll.get(0);
    return a.intValue();
    } /*
     * 功 能:获取总页数 参 数:pageSize(每页显示数据量) 返回值:int
     */
    public int getTotalPage(int pageSize) {
    totalCount = getUserTotalCount("Subjectinfo");
    totalPage = ((totalCount + pageSize) - 1) / pageSize;
    return totalPage;
    } /*
     * 功 能:分页显示数据 参 数:hql , pageNum-第几页 , pageSize-每页条数 返回值:List
     */
    public List pagination(String hql, int pageNum, int pageSize) {
    int numBegin = 0;
    if (pageNum < 1) {
    numBegin = 0;
    } else {
    numBegin = (pageNum - 1) * pageSize;
    }
    List retList = new ArrayList();
    try {
    Query query = s.createQuery(hql);
    query.setFirstResult(numBegin);
    query.setMaxResults(pageSize);
    retList = query.list();
    return retList;
    } catch (HibernateException e) {
    e.printStackTrace();
    } finally {
    try 
                                  HibernateSessionFactory .closeSession() ;这条语句注释掉居然可以输出老师名称,但是程序很不稳定,就是表格显示题目的时候有时候出现错误?????? 觉得应该还是关闭安全点?????????????????????????????????????????????????????
    } catch (HibernateException e) {
    e.printStackTrace();
    }
    }
    return retList;
    } public List QueryList(String hql){
    pageSize = 3;
    HttpServletRequest request = ServletActionContext.getRequest();
    String pageString = request.getParameter("page");
    if (pageString == null || pageString.length() == 0) {
    pageString = "1";
    }
    currentPage = 0;
    try {
    currentPage = Integer.parseInt(pageString);
    } catch (Exception e) {
    e.printStackTrace();
    }
    if (currentPage == 0) {
    currentPage = 1;
    }
    totalPage = getTotalPage(pageSize);
    totalCount = getTotalCount();
    currentPage = currentPage;
    list = this.pagination(hql, currentPage, pageSize);
    return list;
    }
    subjectList.jsp
    <s:iterator id="ls" value="list" status="st">
    <tr>
     <td><%=i++ %><br></td>
                    <td> <s:property value="subName"/><br></td> 可以输出
    <td>  <s:property value="subType"/><br></td>可以输出
    <td><s:if test="difficult='0'">B</s:if ><s:else>A </s:else><br></td> 
         <td>&nbsp;<s:property value="teachers.teaName"/></td> 去掉那个关闭session语句就可以,否则不行