Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Rest应用程序在HTML中打印结果时出现问题_Java_Html_Spring_Thymeleaf - Fatal编程技术网

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

Java Rest应用程序在HTML中打印结果时出现问题,java,html,spring,thymeleaf,Java,Html,Spring,Thymeleaf,我是一名学生,我必须使用JavaSpring开发一个rest应用程序,该应用程序是一个在线分数注册。我有一个StudentController类,在这个类中,我用Java实现了一个方法来显示学生拥有的所有科目以及与每个科目相关的成绩。我有一个哈希映射的数组列表,它将一个主题与相关的分数联系起来。我的问题是,我必须在Html的列表中显示来自哈希映射的结果,即使我尝试了一些来自互联网的东西,它也不起作用。你能帮帮我吗?先谢谢你 以下是Java方法: @RequestMapping(value

我是一名学生,我必须使用JavaSpring开发一个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;
    }
@RequestMapping(value=“student”)
公共模型和视图显示等级()
{
ModelAndView ModelAndView=新建ModelAndView();
列出主题=subjectRepo.findAll();
学生=新生();
Person=session.getUser();
ArrayList品位=新建ArrayList();
student.setName(person.getName());
student.setAccount(person.getAccount());
对于(int i=0;i

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

我修改了HTML代码,正如我从Deadron了解到的那样,使用嵌套的每条语句,但它仍然不起作用。下面是代码:

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

=

谢谢您的回答。我将尝试使用另一个嵌套的each语句,但由衷地说,我不知道如何使它工作,因为我对thymeleaf非常陌生,这是我第一次使用它。接近但不完全正确。您的“地图”变量包含类型为info Map的条目对象。entry So Map.key返回主题对象,而Map.value包含Arraylist。您的Map变量实际上包含一个条目对象,这是混淆的地方。
<form action="student" method="showGrades">
     <tr th:each="grades: ${grades}">
        <div th:each="map : ${grades}">
             <div th:each="mapEntry : ${map}">
                  <span th:text="${mapEntry.key}"></span> =
                  <span th:text="${mapEntry.value}"></span>
             </div>
        </div>
     </tr>
  </form>