用Hibernate3.5.6Final+Struts1.3.10
报java.lang.NumberFormatException: For input string: "sid"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
java.lang.Integer.parseInt(Integer.java:447)
java.lang.Integer.parseInt(Integer.java:497)
javax.el.ArrayELResolver.coerce(ArrayELResolver.java:153)
javax.el.ArrayELResolver.getValue(ArrayELResolver.java:45)
javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
         ……
1、view层
<table class="title" width="100%"  border="1" cellspacing="0" cellpadding="0" align="center">
<c:choose>
<c:when test="${empty gradeList}">
没有符合条件的数据!
</c:when>
<c:otherwise>
<caption class="report_list">学生发布问题平时成绩</caption>
        <tr height="20" align="center">
<td width="80px">序号</td>
<td>学号</td>
<td width="80px">姓名</td>
<td width="80px">平时成绩</td>
</tr>
<c:choose>
<c:when test="${empty gradeList}">
<tr>
<td colspan="4">没有符合条件的数据!</td>
</tr>
</c:when>
<c:otherwise>
<c:forEach items="${gradeList}" var="g" >
<c:set var="i" value="${i+1}"/>
<tr>
<td align="center"><c:out value="${i}" /></td>
<td><c:out value="${g.sid}" /></td>
<td align="center"><c:out value="${g.author}"/></td>
<td align="center"><c:out value="${g.grade}"/></td>
</tr>
</c:forEach>
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
    </table>
当把
<td><c:out value="${g.sid}" /></td>
<td align="center"><c:out value="${g.author}"/></td>
<td align="center"><c:out value="${g.grade}"/></td>
删除后,就没有报错,请问是怎么回事,急!!在线等……

解决方案 »

  1.   

    g里面是一个数组,不能用g.sid这种方式来访问。
    可能你使用的HQL查询中涉及到了多表连接。
    试试看
    <c:set var="g" value="${g[0]}"/>
    紧放在
    <td><c:out value="${g.sid}" /></td>那行代码之前
      

  2.   

    我的HQL是:studentDao.findByHql("select avg(q.grade), q.sid, q.author from Question q group by q.author,q.sid ");
      

  3.   

    DAO层:
    /**
     * 通过HQL查询
     * 
     * @param hql
     * @return
     */
    public List findByHql(String hql) {
    Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    Transaction tx = session.beginTransaction();
    Query q = session.createQuery(hql);
    if(q.list() == null) {
    return null;
    }
    List list = q.list();
    tx.commit();
    return list;
    }
      

  4.   

    那你页面中应该这么写
    <c:forEach items="${gradeList}" var="g" >
    <c:set var="i" value="${i+1}"/>
    <tr>
    <td align="center"><c:out value="${i}" /></td>
    <td><c:out value="${g[1]}" /></td>
    <td align="center"><c:out value="${g[2]}"/></td>
    <td align="center"><c:out value="${g[0]}"/></td>
    </tr>
    </c:forEach>
      

  5.   

    谢谢你们,后来我用如下就可以了
    <c:choose>
    <c:when test="${empty gradeList}">
    <tr>
    <td colspan="4">没有符合条件的数据!</td>
    </tr>
    </c:when>
    <c:otherwise>
    <c:forEach items="${gradeList}" var="gl" >
    <c:set var="i" value="${i+1}"/>
    <tr>
    <td align="center"><c:out value="${i}" /></td>
    <td align="center"><c:out value="${gl[0]}" /></td>
    <td align="center"><c:out value="${gl[1]}"/></td>
    <td align="center"><fmt:formatNumber value="${gl[2]}" pattern="#0.00"/></td>
    </tr>
    </c:forEach>
    </c:otherwise>
    </c:choose>