如何在jsp表中显示Json的String

时间:2017-04-13 17:41:27

标签: java json jsp servlets jstl

我搜遍了所有地方,但无法找到我需要的帮助。

在我的servlet中,我收到一个包含JSON数据的String。这些数据是来自数据库的行,包含:

Things

我的问题是我无法使用jstl在html表格上显示这些数据。

这就是我得到的: enter image description here

(我感到压力很大,无法弄清楚如何解决这个问题)。

Servlet代码(post方法):

[{"note_id":1,"title":"Homework","text":"Math ex. 15, 16, 17.","color":"Yellow","datetime":""}]

jsp代码(只是表格部分):

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    .
    .
    .
    String output = resp.getEntity(String.class);
    System.out.println("* JSON string contains:  * " + output); //prints the string with json data successfully

    ObjectMapper objectMapper = new ObjectMapper();
    TypeReference<ArrayList<Note>> mapType = new TypeReference<ArrayList<Note>>() {};
    ArrayList<Note> jsonToList = objectMapper.readValue(output, mapType);

    request.setAttribute("allNotesOfUser", jsonToList);

    RequestDispatcher rd = request.getRequestDispatcher("/Notes.jsp");
    rd.forward(request, response);
}

注意实体:

<table class="table table-striped">
        <thead>
            <tr>
                <th> Id </th>
                <th> Title </th>
                <th> Text </th>
                <th> Color </th>
                <th> Date/Time </th>
            </tr>
        </thead>

        <tbody>
        <c:forEach items="${allNotesOfUser}" var="pp">
                <tr>
                    <td><${pp.note_id}</td>
                    <td><${pp.title}</td>
                    <td><${pp.text}</td>
                    <td><${pp.color}</td>
                    <td><${pp.datetime}</td>
                </tr>
        </c:forEach>
        </tbody>

    </table>

2 个答案:

答案 0 :(得分:1)

我不知道为什么,但我尝试在我的JSP代码中插入<c:out value="" />,所以它看起来像这样:

<c:forEach items="${allNotesOfUser}" var="pp">
                <tr>
                    <td><c:out value="${pp.note_id}" /></td>
                    <td><c:out value="${pp.title}" /></td>
                    <td><c:out value="${pp.text}" /></td>
                    <td><c:out value="${pp.color}" /></td>
                    <td><c:out value="${pp.datetime}" /></td>
                </tr>
        </c:forEach>

所以现在它正在运作: enter image description here

以下是c:out

的一些参考链接

(现在我只是继续并在其他地方卡住T-T哭XD)

答案 1 :(得分:0)

您可以将Note实体发送到jsp页面并打印它的简单方法。并且您还可以使用JSON对象bt bst方式与JSON对象一起使用java脚本。但您也可以使用com.google.gson.JSONObject来解决此问题。