JSP не перебирает Linkedhashmap, отправленный сервлетом

1

Я пытаюсь создать строки таблицы из LinkedHashmap, посланного из сервлета. Но всякий раз, когда я выполняю, я получаю пустую или нулевую карту. Я попытался запустить сервлет в одиночку, чтобы проверить, существуют ли данные в связаннойhashmap, и это так. Но только когда я передаю его на страницу jsp, я думаю, что получаю пустую карту.

Ниже приведен код

Код Jsp:

<%@ page language="java"
contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <script src="http://code.jquery.com/jquery-1.10.2.js"  type="text/javascript"></script>
    <script src="js/app-ajax.js" type="text/javascript"></script>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
</head>

<body id = body>
<form action="Servlet" method="get">        
    <title>Enter Search Item</title>
    <br>
    <%
    String val = request.getParameter( "search" );
    if ( val!= null ) {
        val = val.toString() ;
   } else {
       val ="";
    }
    %>
        Search Item: <input type="text" name = "searchTerm" value = '<%=val%>' >
    <br>
    <input type="submit" value="Search" id ="button">
</form>
<div>
    <table>
            <c:if test="${not empty Documents}">
            <thead>
            <tr>
                    <td><h2>Title</h2></td>
                     <td><h2>Overview</h2></td>
                </tr>
            </thead>
            <tbody>
                <c:forEach items="${Documents}" var="document">
                    <tr>
                        <td><a href = ${document.key}>${document.value}</a></td>
                        <td></td>
                    </tr>
                </c:forEach>
            </tbody>
            </c:if>

    </table>
</div> 

</body>

Код сервлета:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String search = request.getParameter("searchTerm");
    LinkedHashMap<String, String> Docs = null;
    ASearch ad;
    try {
        ad = new ASearch();
        Docs = ad.getData(search);
    } catch (Exception e) {
        e.printStackTrace();
    }
    response.setContentType("text/html");
    request.setAttribute("Documents", Docs); // Docs is not empty/NULL.
    RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp?search="+search);

    dispatcher.forward( request, response );

}

Может ли кто-нибудь сказать мне, что я делаю неправильно здесь?

Любая помощь будет оценена по достоинству.

благодаря

Теги:
jsp
servlets
jstl

2 ответа

0
Лучший ответ

Вышеприведенный код отлично подходит. Только одна строка должна быть добавлена в файл jsp

<%@ page isELIgnored="false"%>
0

LinkedHashMap сам по себе не является типом Iterable. Если вы хотите итерации по клавишам и значениям, вам нужно будет перебирать ключи в наборе ключей и получать соответствующие значения.

Если вы не используете этот тип в качестве Map<>, я бы предложил использовать список пар.

  • 0
    Карта, отправленная сервлетом, пуста, когда я получаю на jsp. В jsp есть условие if для проверки непустой карты, и только тогда я смогу перебирать карту.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню