关于jsp中el表达式的一些问题和疑惑

最近写一个项目时发现了一个让我疑惑的问题:

下面是查询订餐记录的一个方法,方法返回的是一个list集合对象;

//订餐记录查询
    public  List<Record> selectRecord(){
        List<Record> list=new ArrayList<>();
        try {
            con=JDBCUtils.getConnection();
            String sql="select * from order_record order by id desc";
            ps=con.prepareStatement(sql);
            rs= ps.executeQuery();
            while (rs.next()){
                Record record=new Record();
                record.setId(rs.getInt("id"));
                record.setOrganizename(rs.getString("organizename"));
                record.setOrganizenumber(rs.getInt("organizenumber"));
                record.setOrdernumber(rs.getInt("ordernumber"));
                record.setRecordtime(rs.getString("recordtime"));
                list.add(record);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(rs,ps,con);
        }
        return list;
    }

 然后在servlet中设置了域对象,对象也是list集合对象;

@WebServlet("/historyServlet")
public class HistoryServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ImageService service=new ImageService();
        List<Record> list=service.selectRecord();
        request.setAttribute("recordlist",list);
        request.getRequestDispatcher("menu/history.jsp").forward(request,response);
    }

}

 在jsp中用el表达式遍历list集合对象,运行没有问题;

  <c:forEach items="${recordlist}" var="rl">
        <tr>
            <td>${rl.id}</td>
            <td>${rl.organizename}</td>
            <td>${rl.organizenumber}</td>
            <td>${rl.ordernumber}</td>
            <td>${rl.recordtime}</td>

 但是下面就出问题了,下面我写了一个方法是根据id查询订餐记录,返回的也是一个list集合对象;

//根据id查询订餐记录
     public  List<Record>  selectById(int id){
         List<Record> list=new ArrayList<>();
         try {
            con=JDBCUtils.getConnection();
            String sql="select * from order_record where id=?";
            ps=con.prepareStatement(sql);
            ps.setInt(1,id);
            rs= ps.executeQuery();
            while (rs.next()){
                Record record=new Record();
                record.setId(rs.getInt("id"));
                record.setOrganizename(rs.getString("organizename"));
                record.setOrganizenumber(rs.getInt("organizenumber"));
                record.setOrdernumber(rs.getInt("ordernumber"));
                record.setRecordtime(rs.getString("recordtime"));
                list.add(record);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(rs,ps,con);
        }
         return list;
     }

 servlet也是这样写的,域对象也是一个list集合对象;

@WebServlet("/idServlet")
public class IdServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ImageService service=new ImageService();
        int id=Integer.parseInt(request.getParameter("id"));
        System.out.println(id);
        service.selectById(id);
        List<Record> list=service.selectById(id);
        System.out.println(list);
        request.setAttribute("record",list);
        request.getRequestDispatcher("menu/update_record.jsp").forward(request,response);
    }
}

 jsp我是这样写的;

<form action="<c:url value="/updateServlet"/>" method="post">
订单编号:<input type="text" name="id"  value="${record[0].id}" readonly><br/>
班组名称:<input type="text" name="organizename" value="${record[0].organizename}"><br/>
班组人数:<input type="text" name="organizenumber" value="${record[0].organizenumber}"><br/>
订餐数量:<input type="text" name="ordernumber" value="${record[0].ordernumber}"><br/>
        <input type="submit" value="修改" >

 所以我的问题就是为什么这里写的el表达式要加上下标才不报错,我不加下标的话它会报错:   java.lang.NumberFormatException:For input string :"id"      明明第一个写的时候el表达式不用加下标,也都是list集合对象,为什么会有区别?有知道的大佬可以解答一下吗?

第一个:

<c:forEach items="${recordlist}" var="rl">
        <tr>
            <td>${rl.id}</td>
            <td>${rl.organizename}</td>
            <td>${rl.organizenumber}</td>
            <td>${rl.ordernumber}</td>
            <td>${rl.recordtime}</td>

第二个:

<form action="<c:url value="/updateServlet"/>" method="post">
订单编号:<input type="text" name="id"  value="${record[0].id}" readonly><br/>
班组名称:<input type="text" name="organizename" value="${record[0].organizename}"><br/>
班组人数:<input type="text" name="organizenumber" value="${record[0].organizenumber}"><br/>
订餐数量:<input type="text" name="ordernumber" value="${record[0].ordernumber}"><br/>
        <input type="submit" value="修改" >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值