Как отобразить содержимое массива объектов в тимлеаф Spring при загрузке - PullRequest
1 голос
/ 16 марта 2019

Вот 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

вот интерфейс:

введите описание изображения здесь Спасибо ! За вашу помощь!

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Добро пожаловать в SO.

Вам не нужен синтаксис param в этом случае.Вы можете просто напечатать:

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

Это вызовет toString() для motCle String, который уже включен в ваш метод Controller.

синтаксис param необходим, если вы хотите напрямую извлечь параметр запроса, как указано в документах Thymeleaf .

Обратите внимание, что в этом случае вы также можете сократить отображение до @GetMapping("listPret").

Кроме того, обязательно добавьте текст между тегами HTML.Когда вы открываете HTML без контейнера (Tomcat), браузер все равно отображает страницу со статическими элементами и дает вам представление о том, как будет выглядеть дизайн.

РЕДАКТИРОВАТЬ: если вы хотите напечататьзначение 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 означает, что вы обращаетесь к свойству объекта, поэтому будьте осторожны при его использовании.

1 голос
/ 16 марта 2019

Это происходит, когда вы печатаете ссылку на массив напрямую.

Выход

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

есть

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

(число после @ почти всегда отличается)

ТАК, что ответ на ваш вопрос - установить массив внутри атрибута модели описанным выше подходом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...