【问题标题】:Java Rest app problem with printing results in HTMLJava Rest 应用程序在 HTML 中打印结果的问题
【发布时间】:2020-01-04 16:49:17
【问题描述】:

我是一名学生,我必须使用 Java Spring 开发一个 rest 应用程序,该应用程序是一个在线标记寄存器。我有一个 StudentController 类,在其中我用 Java 实现了一个方法来显示学生拥有的所有科目以及与每个科目相关的成绩。我有一个哈希映射的数组列表,将一个主题与其相关的成绩联系起来。我的问题是我必须从 Html 的列表中显示哈希映射的结果,即使我从互联网上尝试了一些东西,它也不起作用。你能帮我么?提前谢谢你。

这是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>

【问题讨论】:

    标签: java html spring thymeleaf


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回答。我会尝试使用另一个嵌套的 each 语句,但我真的不知道如何使它工作,因为我对 thymeleaf 很陌生,这是我第一次使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2011-08-08
    相关资源
    最近更新 更多