Java Rest 应用程序在 HTML 中打印结果时出现问题

标签 java html spring thymeleaf

我是一名学生,我必须使用 Java Spring 开发一个休息应用程序,该应用程序是一个在线分数注册器。我有一个 StudentController 类,在其中我用 Java 实现了一个方法来显示学生拥有的所有科目以及与每个科目相关的成绩。我有一个 HashMap 的数组列表,它将一个主题与与其相关的成绩链接起来。我的问题是我必须从 Html 列表中显示 HashMap 的结果,即使我尝试了互联网上的一些东西,它也不起作用。你能帮我么?预先感谢您。

这是 Java 方法:

    @RequestMapping(value = "student")
    public ModelAndView showGrades()
    {
        ModelAndView modelAndView = new ModelAndView();

        List<Subject> subjects = subjectRepo.findAll();

        Student student = new Student();
        Person person = session.getUser();

        ArrayList<HashMap<Subject, ArrayList<Integer> >> grades = new ArrayList<HashMap<Subject, ArrayList<Integer> >>();

        student.setName(person.getName());
        student.setAccount(person.getAccount());

        for(int i=0; i<subjects.size(); i++){
            HashMap<Subject, ArrayList<Integer> > mappingGrades = new HashMap<Subject, ArrayList<Integer>>();
            Random rand = new Random();
            ArrayList<Integer> studentGrades = new ArrayList<Integer>();
            studentGrades.add(rand.nextInt(10));
            studentGrades.add(rand.nextInt(10));
            studentGrades.add(rand.nextInt(10));
            mappingGrades.put(subjects.get(i), studentGrades);
            student.setGrades(mappingGrades);
            grades.add(mappingGrades);
        }

        modelAndView.addObject("grades", grades);
        return modelAndView;
    }

这是 HTML 代码,包括我的打印尝试:

    <!DOCTYPE html>
<html>

<head>
  <!-- Site made with Mobirise Website Builder v4.11.4, https://mobirise.com -->
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="generator" content="Mobirise v4.11.4, mobirise.com">
  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
  <link rel="shortcut icon" href="assets/images/logo4.png" type="image/x-icon">
  <meta name="description" content="">

  <title>Student</title>
  <link rel="stylesheet" href="assets/web/assets/mobirise-icons/mobirise-icons.css">
  <link rel="stylesheet" href="assets/bootstrap/css/bootstrap.min.css">
  <link rel="stylesheet" href="assets/bootstrap/css/bootstrap-grid.min.css">
  <link rel="stylesheet" href="assets/bootstrap/css/bootstrap-reboot.min.css">
  <link rel="stylesheet" href="assets/tether/tether.min.css">
  <link rel="stylesheet" href="assets/dropdown/css/style.css">
  <link rel="stylesheet" href="assets/theme/css/style.css">
  <link rel="preload" as="style" href="assets/mobirise/css/mbr-additional.css">
  <link rel="stylesheet" href="assets/mobirise/css/mbr-additional.css" type="text/css">




</head>

<body>
  <section class="header1 cid-rLBDn2JTwv" id="header16-9">





    <div class="container">
      <div class="row justify-content-md-center">
        <div class="col-md-10 align-center">
          <h1 class="mbr-section-title mbr-bold pb-3 mbr-fonts-style display-1">
            GRADES
          </h1>

          <p class="mbr-text pb-3 mbr-fonts-style display-5">
            Subjects and related grades.
          </p>

        </div>
      </div>
    </div>

  </section>

  <section class="engine"><a href="https://mobirise.info/s">bootstrap theme</a></section>
  <section class="services5 cid-rLBDGcNu8T" id="services5-b">
    <!---->

    <!---->
    <!--Overlay-->

    <!--Container-->
    <div class="container">
      <div class="row">
        <!--Titles-->
        <div class="title pb-5 col-12">


        </div>
        <!--Card-1-->
        <div class="card px-3 col-12">
          <div class="card-wrapper media-container-row media-container-row">
            <div class="card-box">
              <div class="top-line pb-3">
                <h4 class="card-title mbr-fonts-style display-5">
                  <table>
                    <tbody>
                    <form action="student" method="showGrades">

                    <div th:each="map : ${grades}">
                        <div th:each="mapEntry : ${map}">
                          <span th:text="${mapEntry.key}"></span> =
                          <span th:text="${mapEntry.value}"></span>
                        </div>
                      </div>
                    </form>

                    </tbody>
                  </table>
                </h4>
                <p class="mbr-text cost mbr-fonts-style m-0 display-5">
                  $400
                </p>
              </div>
              <div class="bottom-line">

              </div>
            </div>
          </div>
        </div>
        <!--Card-2-->

        <!--Card-3-->

        <!--Card-4-->

        <!--Card-5-->

        <!--Card-6-->

        <!--Card-7-->

        <!--Card-8-->

        <!--Card-9-->

        <!--Card-10-->

        <!--Card-11-->

        <!--Card-12-->

      </div>
    </div>
  </section>

  <script src="assets/web/assets/jquery/jquery.min.js"></script>
  <script src="assets/popper/popper.min.js"></script>
  <script src="assets/bootstrap/js/bootstrap.min.js"></script>
  <script src="assets/tether/tether.min.js"></script>
  <script src="assets/smoothscroll/smooth-scroll.js"></script>
  <script src="assets/dropdown/js/nav-dropdown.js"></script>
  <script src="assets/dropdown/js/navbar-dropdown.js"></script>
  <script src="assets/touchswipe/jquery.touch-swipe.min.js"></script>
  <script src="assets/theme/js/script.js"></script>

</body>

</html>

最佳答案

在您提供的代码中,mapEntry.key 的值是一个Subject 对象,mapEntry.value 的值是一个ArrayList。您需要告诉 thymeleaf 如何输出这些对象。如果Subject有一个正确的toString方法,它将按您的预期工作,但ArrayList将无法正确打印。您需要使用另一个嵌套的 every 语句,或者需要将其连接到单个字符串中。

关于Java Rest 应用程序在 HTML 中打印结果时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59584720/

相关文章:

java - 对webhdfs的Http请求但给出FileNotFoundException

java - java中读取动态文件路径

java - 将 Java Bean 从 Applet 发送到 Servlet

java - 使用数组在 MySQL 中插入值

java - Java中的SGML解析器?

html - 如何在html和css中的侧边菜单中创建子菜单

java - 如何通过 Maven 使用 Netbeans 调试 Spring Boot

java - 使用 spring + jpa + hibernate 但无法持久化实体并且从不抛出异常,测试通过

javascript - 如何通过滚动捕捉使拖动滚动工作顺利进行

html - 将 CSS 按钮链接到电子邮件 - 如何完成?