【问题标题】:Print hashmap value in jsp page在 jsp 页面中打印 hashmap 值
【发布时间】:2019-05-18 16:42:45
【问题描述】:

我试图在 jsp 页面中调用 HashMap 值,但出现错误并提示错误

出现意外错误(类型=内部服务器错误,状态=500)。 对于输入字符串:“res”

我的代码;

<c:forEach items="${onlineExamList}" var="item"
                                        varStatus="loop">

                                        <div>
                                            <b>${item.question1}</b><br>

                                            <div class="radio">
                                                <label><input type="radio" value="a"
                                                    name="answers[${loop.index}]">${item.option1}</label>
                                            </div>
                                            <div class="radio">
                                                <label><input type="radio" value="b"
                                                    name="answers[${loop.index}]">${item.option2}</label>
                                            </div>
                                            <div class="radio">
                                                <label><input type="radio" value="c"
                                                    name="answers[${loop.index}]">${item.option3}</label>
                                            </div>
                                            <div class="radio">
                                                <label><input type="radio" value="d"
                                                    name="answers[${loop.index}]">${item.option4}</label>
                                            </div>
                                            <input type="text" name="rightAnswer"
                                                value="${item.rightAnswer}">



//problem in this line
                                            <c:if test="${result != null}">
                                                <br>
                                                <br>
                                                <b>Your answer: ${result.get("res"+loop.index).get(1)}</b>

                                                <br>
                                            </c:if>
                                        </div>

                                        <hr />
                                    </c:forEach>

这就是我从控制器设置哈希图的方式

Map<String, List<String>> mapResult = new HashMap<String, List<String>>();

        int totalScore = 0;

        for (int i = 0; i < answers.answers.size(); i++) {
            List<String> result = new ArrayList<>();
            String res = "Wrong";
            if (answers.answers.get(i).equals(answers.rightAnswer.get(i))) {
                res = "Correct";
                totalScore+=10;
            }

            result.add(res);
            result.add(answers.answers.get(i));
            result.add(answers.rightAnswer.get(i));

            mapResult.put("res" + i, result);
        }

        ra.addFlashAttribute("result", mapResult);
        ra.addFlashAttribute("score", totalScore);

java 页面上打印的内容相同

for (int i = 0; i < 10; i++) {
            System.out.println(mapResult.get("res" + i).get(0));
            System.out.println(mapResult.get("res" + i).get(1));
            System.out.println(mapResult.get("res" + i).get(2));
            System.out.println("...................................");;
        }

如何在 jsp 页面中打印 hashmap 值?

【问题讨论】:

  • 基本规则是,如果您看到 500 错误,则说明您的服务器代码有问题,而 JSP 代码没有问题。也发布堆栈跟踪。

标签: java spring jsp hashmap


【解决方案1】:

请检查试试这个。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:forEach items="${currentLoggedInUsersMap}" var="entry">
    Key = ${entry.key}, value = ${entry.value}<br>
</c:forEach>

【讨论】:

  • 该值应该打印在另一个 for 循环中,我应该得到一个循环索引。我不认为这会奏效。你还有别的想法吗?
  • 你试过了吗?它将根据您的要求打印所有哈希图值。
  • 不是这个原因,是${result.get("res"+loop.index).get(1)}引起的
  • 你能再看看我的问题吗?我已经更新了
  • 对于这种方法,您也可以使用
【解决方案2】:

我通过像这样使用concat 连接字符串来解决问题

${result.get("res".concat(loop.index)).get(1)}

【讨论】:

    【解决方案3】:

    mapResult 对象是一个包含字符串数组的映射
    Hashmap&lt;String, List&lt;String&gt;&gt;
    您可能需要先从地图对象中获取数组,然后对其进行迭代。
    这可能有帮助吗?

    <table> <c:forEach var="results" items="${resultsMap['res' + loop.index]}" varStatus="loop"> <tr> <c:forEach var="answer" items="${results}" varStatus="status"> <td> <td>$answer</td> </td> </c:forEach> </tr>
    </c:forEach>
    </table>

    【讨论】:

    • 您好先生,我可以获取您的 gmail 或任何邮件服务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多