我做的是一查询功能、 页面有几个文本框和下拉框的值作为条件 。我在servlet里用stringBuffer拼装了sql语句、
    然后调用查询方法,把拼装好的sql传进去toString了一下,放入session会话里。然后用转发跳转至要展示的页面。
     页面里用的是一个标签循环foreach、在循环放入的页面里有一个删除功能 。通过id删除、在实体类里id是int类型  
      但一运行就报什么id对于string类型找不到 。  这就不知道是怎么回事了。请高手指教指教!
     
   

解决方案 »

  1.   

    不知道楼主代码怎么写的。转成String试试:String.valueOf();
      

  2.   


      private int Stuid;
       private String GradeName;
       private int StuNo;
       private String   StuName;
       private  String sex;
       private Date birthday;
       private String hopy;这是实体类。每一个都是封装了的、
    ----------------------public List<StudentShow>  getInfo(String sql)
    {
    List<StudentShow>  list = new ArrayList<StudentShow>();

    try {
    //得到连接
    conn=this.getConn();
    //创建sql语句

    //创建操作对象
    ps=conn.prepareStatement(sql);
    //zhix操作
    rs=ps.executeQuery();
    while(rs.next())
    {
    StudentShow st=new StudentShow();
    st.setGradeName(rs.getString("GradeName"));
    st.setStuNo(rs.getInt("StuNo"));
    st.setStuName(rs.getString("StuName"));
    st.setSex(rs.getString("sex"));
    st.setStuid(rs.getInt("StuId"));
    st.setHopy(rs.getString("Hopy"));
    st.setBirthday(rs.getDate("Birthday"));
    list.add(st);
    }
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    this.CloseAll(rs, ps, conn);
    }
    return list;
    }
    这是查询方法、需要一个sql
    -------------------------------------<form action="SelectSer" method="post"> 
    班级:<select name="gradename">
                         <option value="无">--请选择--</option>
                         <option value="Y2T89">Y2T89</option>
                            <option value="Y2T87">Y2T87</option>
                        </select>
    姓名:<input type="text"  name="name" />
    出生年份:<select name="birthday" ><option value="无">--请选择--</option>
                         <option value="1988">1988</option>
                            <option value="1989">1989</option></select>
    性别:<select name="sex"><option value="无">--请选择--</option>
                         <option value="男">男</option>
                            <option value="女">女</option></select>
    <input type="submit"  value="查询"/>
       <table border="1" width="97%" align="center">
         <thead>
             <tr>
    <th><input type="button" value="删除"/></th>
                 <th>班级名称</th>
                    <th>学号</th>
                    <th>学生姓名</th>
                    <th>性别</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
            <c:if test="${not empty sessionScope.list}">
         <c:forEach var="test" items="&{sessionScope.list}">
             <tr>
    <td><input type="checkbox"/>${test.StuId}</td>

                 <td>${test.GradeName}</td>
                    <td>${test.StuNo}</td>
                    <td>${test.StuName}</td>
                    <td>${test.sex}</td>
                 <td>
                    <a href="detailStudent.jsp?num=${test.StuId}">查看</a>
                    <a href="updateStudent.jsp?num=${test.StuId}">修改</a>
                    <a href="left.jsp?num=${test.StuId}" onclick="confirm('确认删除吗?');">删除</a>        
                      </td>            
                </tr> 
                 </c:forEach>
               </c:if>                    
       这是页面的代码、 输入值后进入servlet、ServletSer这个类里处理方法
    -------------------------------------------------------------
    ListInfo li= new ListInfo();
        String Gname=request.getParameter("gradename");
        String name=request.getParameter("name");
        String birthday=request.getParameter("birthday");
        String sex=request.getParameter("sex");
                
        StringBuffer sb=new StringBuffer();
        sb.append("select * from StudentShow ");
        if(!Gname.equals("无"))
        {
          sb.append(" where gradeName='"+Gname+"'");
        }
        if(!birthday.equals("无"))
        {
         sb.append("  and  to_char(birthday,'YYYY')='"+birthday+"'");
        
        }
        if(name!=null && !name.equals(""))
        {
         //sb.append("and StuName like '"+"'%"+name+"%"+"'' ");
         sb.append("and StuName like '"+"%"+name+"%"+"' ");
        }
        
        if(!sex.equals("无"))
        {
        
         sb.append("and sex='"+sex+"'");
        }
        
      List<StudentShow>  list=li.getInfo(sb.toString());
      request.getSession().setAttribute("list", list);
        
        request.getRequestDispatcher("index.jsp").forward(request, response);这就是servlet。dopost里的代码、获取文本的值,然后判断进行拼接  
      报的错误时:javax.el.PropertyNotFoundException: Property 'StuId' not found on type java.lang.String   
      

  3.   

    提示很明确,没有找到StuId是String类型的。你的StuId是int类型。
      

  4.   


    就是int类型的才对啊、我实体类里都是int类型  为何显示找不到string类型 、  很是让我费解啊。
      

  5.   

    你先把实体类里面的StuId改成String类型的,试试看对不对
    假如对了,问题就出在这里
      

  6.   

    请问LZ数据库里面StuId定义的是int型的吗?恐怕是String类型的吧。
      

  7.   


    哥子、  这么低级的错误我是不会犯的。 数据库里的肯定是int 类型的。
      

  8.   


    哥子、  这么低级的错误我是不会犯的。 数据库里的肯定是int 类型的。
      

  9.   

    StringBuffer sb=new StringBuffer();
    sb.append("select * from StudentShow ");
    你把所有的值都放到StringBuffer里面了,再读取的时候就不是int类型的了,当然找不到了。
      

  10.   

    用String.valueof()强转下看看结果.