在我生成List的第一个servlet中,如下所示
List<Image> imageId = imageDAO.listNames(image);
request.setAttribute("imageId", imageId);
//Redirect it to home page
request.getRequestDispatcher("/webplugin/jsp/profile/photos.jsp").forward(request, response);
在imageId
c:forEach
列表
<c:forEach items="${imageId}" var="image">
<img src="Photos/${image.photoid}">
</c:forEach>
我有一个Image bean类,其中有photoid作为其属性
在第二个servlet中映射到Photos
url-pattern我带上每张照片。
问题:
imageId
列表中的项目数。假设imageId在其List中有五个imageid,那么相同的图像在我的JSP中显示五次。如何从中查找每个id
?编辑:这是我的imageDAO.listNames()方法来获取photoid在检索图像并将其放入List<Image>
public List<Image> listNames(Image image) throws IllegalArgumentException, SQLException, ClassNotFoundException {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultset = null;
Database database = new Database();
List<Image> list = new ArrayList<Image>();
try {
connection = database.openConnection();
preparedStatement = connection.prepareStatement(SQL_GET_PHOTOID);
preparedStatement.setLong(1, image.getUserid());
resultset = preparedStatement.executeQuery();
while(resultset.next()) {
image.setPhotoid(resultset.getString(1));
list.add(image);
}
} catch (SQLException e) {
throw new SQLException(e);
} finally {
close(connection, preparedStatement, resultset);
}
return list;
}
答案 0 :(得分:1)
当您遍历结果集时,您一遍又一遍地设置相同图像对象的照片ID ...然后多次将同一对象重新插入列表。
更新:简单地说,您在该方法中的逻辑模型存在缺陷。您不需要image参数。像这样的东西应该工作(重点是在每次迭代中创建一个新的Image对象):
List<Image> list = new ArrayList<Image>();
try {
...
while(resultset.next()) {
Image image = new Image ();
image.setPhotoid(resultset.getString(1));
list.add(image);
然后你的列表将有几个不同的对象。