JSP Вывод json в цикле

200
29 марта 2018, 09:00

Мне приходит подобный JSON-массив:

[com.core.newbie.controller.UserController] (информация откуда): [{"age":24,"id":1,"password":"001","userName":"001"},{"age":24,"id":2,"password":"002","userName":"002"},{"age":24,"id":3,"password":"002","userName":"002"},{"age":24,"id":4,"password":"004","userName":"004"},{"age":24,"id":5,"password":"005","userName":"005"},{"age":14,"id":111,"password":"12","userName":"derrick-2"}]

UserController, код из нужной части:

@RequestMapping("/users")
public String users(final Model model) {
    final List<User> users = userService.getAll();
    model.addAttribute("users", users);
    logger.debug("running in UserController.java -> users()");
    logger.info(JSON.toJSON(users));
    return "/user/users.jsp";
}

Пытаюсь вывести его в users.jsp:

Пользователи:
=<c:forEach begin="0" end="${users.length() -1}" var="user" items="${users}">
    <div>
        ${user.userName}
    </div>
    <br />
</c:forEach>

Но не выводит.

$(users) при этом выводит:

[com.core.newbie.model.User@5fc33319, com.core.newbie.model.User@6a8d7cfc, com.core.newbie.model.User@708bb2c2, com.core.newbie.model.User@500e9d80, com.core.newbie.model.User@16133763, com.core.newbie.model.User@1778c3c1] 

При этом в случае с обычным User (1) все корректно выводится, код из UserController:

@RequestMapping("/showUser")
public String showUser(final HttpServletRequest request, final Model model) 
{
    final int userId = Integer.parseInt(request.getParameter("id"));
    final User user = userService.getUserById(userId);
    model.addAttribute("user", user);
    logger.debug("running in UserController.java -> showUser()");
    logger.info(JSON.toJSON(request.getRequestURI()));
    logger.info(JSON.toJSON(user));
    return "/user/showUser.jsp";
}

UPD: UserServiceImpl.java, часть с получением List:

@Override
@Select("select * from n_user")
public List<User> getAll() {
    return userMapper.findAll();
}

UPD2: После правок код стал таким:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Пользователи</title>
</head>
<body>
    Пользователи:
    <c:forEach var="user" items="${users}">
        <div>
            <c:out value="${user.userName}" />
        </div>
        <br />
    </c:forEach>
</body>
</html>

На страницу выводится только слово "Пользователи:". Ни ${user.id}, ни просто ${user} ничего в цикле не выводят.

Answer 1

Во-первых, вам приходит не JSON, а обычный список объектов класса User. В JSON вы его преобразуете только в момент вывода в лог, а в JSP-страницу он поступает в оригинальном виде. Во-вторых, итерация по элементам списка делается проще:

<c:forEach var="user" items="${users}">
    <div>
        <c:out value="${user.userName}" />
    </div>
    <br />
</c:forEach>

В классе User обязательно должен быть геттер getUserName.

READ ALSO
JavaFx, ProgressBar and etc

JavaFx, ProgressBar and etc

Ребята, я только осваиваю Джаву и программирование в целомПрошу помощи

154
File Manager хочу реализовать

File Manager хочу реализовать

Обьясните, как программа видет стандартные иконки, pdf,mpr,jpgКак при открытие он сам знал какая программа ему нужна? И как вывести меню на удержание...

156
Помощь в разработке простой игры на JavaFX (Xonix)

Помощь в разработке простой игры на JavaFX (Xonix)

Всем приветНужна помощь в создании игры

179
Сортировка по двум параметрам(Java)

Сортировка по двум параметрам(Java)

Здравствуйте, cтолкнулся с такой проблемой, что надо отсортировать ArrayList по двум параметрам, по имени владельца и по цене комнаты

172