【发布时间】:2018-03-22 20:04:59
【问题描述】:
我通过我的 jdbc 有一个对象类,当客户登录时,我想在其中显示所有订单。
我的数据库中有一个类可以访问所有订单:
public static ArrayList<OrderSample> showOrders() throws ClassNotFoundException, SQLException, LoginSampleException {
try {
ArrayList<OrderSample> order = new ArrayList();
Connection con = Connector.connection();
String SQL = "SELECT * from useradmin.users";
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery(SQL);
while(rs.next()){
int id = rs.getInt("idorder");
int height = rs.getInt("height");
int length = rs.getInt("length");
int width = rs.getInt("width");
OrderSample o = new OrderSample(height, length, width);
order.add(o);
}
return order;
} catch (ClassNotFoundException | SQLException ex) {
throw new LoginSampleException(ex.getMessage());
}
}
}
然后我有一个 servlet 方法将信息放入会话对象,从命令超类处理所有请求:
公共类员工扩展命令{
@Override
String execute(HttpServletRequest request, HttpServletResponse response) throws LoginSampleException {
try {
ArrayList<OrderSample> orders =UserMapper.showOrders();
request.setAttribute("orders", orders);
} catch (ClassNotFoundException ex) {
Logger.getLogger(Employee.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(Employee.class.getName()).log(Level.SEVERE, null, ex);
}
return "employee";
}
当我尝试循环遍历订单对象以在我的 jsp 中显示它们时,它们不显示
<c: forEach items="${order}" var="order">
<tr>
<td>Order to delete </td>
</tr>
</c:forEach>
【问题讨论】:
-
代码将单个
order作为“订单”放在请求范围(不是会话范围)中,但order不是集合。也许使用整个orders而不是单个order。 -
+1 关于 Andrews S 所说的内容,此外,还有一些有问题的代码块也在发生。在您的
showOrders()方法中,有一个try语句没有catch语句。在您的 jsp 中,<c: foreach>的名称中有一个空格。不确定是否重要,但我不会在那里有那个空间。在您的 servlet 代码中,您最终只在请求中设置了一个OrderSample,而不是OrderSamples 中的List。意思是,当你到达 jsp 时不会有集合,<c:foreach>无论如何也没有任何东西可以迭代。 -
所以我必须在 var 中写命令?
-
我已经适当地更改了代码,但它仍然无法正常工作..