gpt4 book ai didi

java - 无法让我的 HashMap 在 jSTL 中工作

转载 作者:行者123 更新时间:2023-11-28 23:19:33 24 4
gpt4 key购买 nike

我在 servlet 中有一个 Map

Map<String, Boolean> seatsModelComplete = new LinkedHashMap<>();

string 表示座位号,Boolean 表示座位是否已预订。

我在请求中设置属性如下:

request.setAttribute("seats", seatsModelComplete);

但我无法让它在 JSP 中工作。具体来说, map 不会被以下 foreach 循环

迭代
<c:forEach items="${requestScope.seats}" var="seats">
...
</c:forEach>

这是我的 Servlet:

@WebServlet(name = "SeatsServlet", urlPatterns = "/seats")

public class SeatsServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

List<MovieDTO> movieDTOList = (List<MovieDTO>) request.getSession().getAttribute("movieDTOList");


int movie_id = Integer.parseInt(request.getParameter("movie_id"));

int hall_id = Integer.parseInt(request.getParameter("hall_id"));

int showtime_id = Integer.parseInt(request.getParameter("showtime_id"));

MovieDTO selected_movie = null;

Hall selected_hall = null;

Showtime selected_showtime = null;
for (MovieDTO m : movieDTOList) {
if (m.getId() == movie_id) {
selected_movie = m;
break;
}
}
if (selected_movie != null) {
request.setAttribute("movie_title", selected_movie.getTitle());
}

for (Hall h : selected_movie.getHallList()) {
if (h.getId() == hall_id) {
selected_hall = h;
break;
}
}
if (selected_hall != null) {
request.setAttribute("hall_id", selected_hall.getId());
}

for (Showtime s : selected_hall.getShowtimes()) {
if (s.getId() == showtime_id) {
selected_showtime = s;
break;
}
}
if (selected_showtime != null) {
request.setAttribute("showtime_time", selected_showtime.getTime());
}
List<Seat> seats = selected_showtime.getSeats();


int maxRows = (PropertyHolder.getInstance().getMaxRowsCount().toLowerCase().toCharArray()[0] - 'a') + 1;
int maxNumbers = Integer.parseInt(PropertyHolder.getInstance().getMaxNumberCount());

String aSeat;
boolean isReserved;
Map<String, Boolean> seatsModelComplete = new LinkedHashMap<>();
for (int i = 0; i < maxRows; i++) {
for (int j = 0; j < maxNumbers; j++) {
aSeat = (((char)('A' + i)) + "").concat((j + 1) + "") ;
isReserved = false;
for (Seat seat : seats) {
if (seat.getRow().concat(seat.getNumber() + "").equals(aSeat)){
isReserved = true;
}
}
seatsModelComplete.put(aSeat, isReserved);
}
}
request.setAttribute("seats", seatsModelComplete);
// request.getSession().setAttribute("seats", seatsModelComplete); map gets passed only here, not in request scope

request.getRequestDispatcher("/pages/seat_selection/seat_selection.jsp").forward(request, response);

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
}

最佳答案

你确定你初始化了吗?愚蠢的问题,但是呃...另外,你可以尝试类似的东西

<c:forEach items="${seats}" var="seat">
<option value="${seat.key}">${seat.taken}</option
</c:forEach>

编辑:您可能将 jsp 搞砸了,您可以随时测试您的集合是否已正确初始化和/或是否可以在适当的范围内找到:

<c:choose>
<c:when test="${empty seats}">
Seats are empty or null.
</c:when>
<c:otherwise>
Seats are not empty or null
</c:otherwise>
</c:choose>

关于java - 无法让我的 HashMap 在 jSTL 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45500337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com