如何在thymeleaf Spring Boot中显示对象数组的内容

时间:2019-03-16 17:28:31

标签: spring-boot thymeleaf

这是带有百里香的HTML代码:

<thead>
  <div>
    <label>Nom lecteur :</label>
    <label th:text="${param.motCle}"></label>
 </div>
    <tr>
     <th>NomLecteur</th><th>DESIGNATION</th><th>AUTEUR</th><th>Date_Edition</th>
    </tr>                   
</thead>

这是控制器:

@RequestMapping(value="listPret")
 public String indexPret(Model model,
  @RequestParam(name="page",defaultValue="0")int p,
  @RequestParam(name="size",defaultValue="7")int s,          
  @RequestParam(name="motCle",defaultValue="")String mc,             
  @RequestParam(name="pret.lecteur.nom",defaultValue="0")
                               String nom)  {
        Page<Pret> 
 pagePrets=pretRepository.chercher("%"+mc+"%",new PageRequest(p, s));
        model.addAttribute("listPrets",pagePrets.getContent());
        int[] pages=new int[pagePrets.getTotalPages()];
        model.addAttribute("pages",pages);
        model.addAttribute("size", s);
        model.addAttribute("pageCourante",p);
        model.addAttribute("motCle",mc);
        model.addAttribute("pret.lecteur.nom",nom);
            return "listPret";  
}

这是界面上的结果。内容未显示,但此显示:

[Ljava.lang.String;@7598d00e

这是界面:

enter image description here 谢谢 !为您提供帮助!

2 个答案:

答案 0 :(得分:1)

直接打印数组引用时会发生这种情况。

的输出
String[] helloWorld = {"Hello", "World"};
System.out.println(helloWorld);
System.out.println(Arrays.toString(helloWorld));

[Ljava.lang.String;@45a877
[Hello, World]

@之后的数字几乎总是不同的)

因此,您的问题的答案是通过上述方法在model属性内部设置数组。

答案 1 :(得分:1)

欢迎来到。

在这种情况下,您不需要param语法。您可以简单地打印:

<label th:text="${motCle}">[Value of motcle]</label>

这将调用Controller方法中已包含的toString() motCle上的String

如果您要直接提取查询参数(如Thymeleaf docs中所引用,则param语法是必需的。

请注意,在这种情况下,您还可以缩短到@GetMapping("listPret")的映射。

此外,请确保在HTML标记之间包含一些文本。当您打开不带容器(Tomcat)的HTML时,浏览器仍将显示带有静态元素的页面,并使您大致了解设计的外观。

编辑:如果要打印nom的值,则将字符串值参数更改为类似于以下内容的值,以查看实际操作:

@GetMapping("listPret")
public String indexPret(@RequestParam(name="page",
                                      defaultValue="0") int p,
                        @RequestParam(name="size",
                                      defaultValue="7") int s,          
                        @RequestParam(name="motCle",
                                      defaultValue="") String mc,             
                        @RequestParam(name="nom",
                                      defaultValue="0") String nom, 
                        Model model)  {

       //...other code here
       System.out.println("nom="+nom); //temporarily print this value to see what you will be displaying
       model.addAttribute("nomLecture", nom); //note that the variable you have here is always what you would put in the HTML
            return "listPret";  
}

在HTML中:

<label th:text="${nomLecture}">[Value of nomLecture]</label>

Java中的“点”运算符表示您正在访问对象的属性,因此在使用它时要小心。