Как передать List на страницу jsp?

190
12 февраля 2018, 03:44

У меня вот такой работающий контроллер:

@Controller
@RequestMapping("/")
public class MainController {
    @RequestMapping(method = RequestMethod.GET)
    public String printHello(ModelMap model) {
        model.addAttribute("title", "Ура!");
        model.addAttribute("message", "Работает!");
        DataFromBase dataFromBase = new DataFromBase();
        List<Book> bookList = dataFromBase.getBooks();
        model.addAttribute("bookList",bookList); <- вот попытка передать Лист на jsp
        return "index";
    }
}

и так как это мой первый опыт со спрингом, то вот таким образом я получаю List из MySQL при помощи Hibernate:

public class DataFromBase {
    private static final SessionFactory ourSessionFactory;
    static {
        try {
            Configuration configuration = new Configuration();
            configuration.configure("well/dao/hibernate.cfg.xml");
            ourSessionFactory = configuration.buildSessionFactory();
        } catch (Throwable ex) {
            throw new ExceptionInInitializerError("Ooops 1: " + ex);
        }
    }
    public static Session getSession() throws HibernateException {
        return ourSessionFactory.openSession();
    }
    public List<Book> getBooks() {
        final Session session = getSession();
        List<Book> bookList = new LinkedList<>();
        try {
            System.out.println("querying all the managed entities...");
            final Metamodel metamodel = session.getSessionFactory().getMetamodel();
            for (EntityType<?> entityType : metamodel.getEntities()) {
                final String entityName = entityType.getName();
                final Query query = session.createQuery("from " + entityName);
                System.out.println("executing: " + query.getQueryString());
                bookList = query.list();
                for (Object o : bookList) {
                    System.out.println("  " + o);
                }
            }
            return bookList;
        } finally {
            session.close();
        }
    }
}

ну и собственно сам jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>Заголовок: ${title}</title>
  </head>
  <body>
  Сообщение: ${message}
    <table>
        <thead>
            <tr>
                <th>id</th>
                <th>title</th>
                <th>description</th>
                <th>author</th>
                <th>isbn</th>
                <th>printYear</th>
                <th>readAlready</th>
            </tr>
        </thead>
        <tbody>
        <tr>
            <c:forEach var="book" items="${bookList}">
                <td>${book.id}</td>
                <td>${book.title}</td>
                <td>${book.description}</td>
                <td>${book.author}</td>
                <td>${book.isbn}</td>
                <td>${book.printYear}</td>
                <td>${book.readAlready}</td>
            </c:forEach>
        </tr>
        </tbody>
    </table>
  </body>
</html>

но фокус не удается... как правильно это сделать?

Answer 1

верно, не хватало:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
READ ALSO
Как импортировать jquery-плагины в webpack?

Как импортировать jquery-плагины в webpack?

Есть самописный плагин jquery примерно такого вида:

176
Убрать отображение 403 ошибки из консоли

Убрать отображение 403 ошибки из консоли

Есть ajax запрос, который подгружает нужную информациюНа серверной стороне различным группам пользователей некоторые страницы могут быть...

149
Как увеличить размер сайта в html [требует правки]

Как увеличить размер сайта в html [требует правки]

Как увеличить размер сайта в html?Например: я закидал все картинками и мои контакты в нижнем правом углу,которые туда прикручены уехали почти...

219
Как сложить цифры введенные из prompt?

Как сложить цифры введенные из prompt?

Как сложить цифры введенные из prompt()?

236