Связывание между переменной html в строке и классом модели с помощью Spring Boot - PullRequest
0 голосов
/ 24 июня 2019

Я хочу создать привязку между переменными строки html и классом модели для приложения с весенней загрузкой, а затем я верну страницу html.Вот что мне нужно:

 @PostMapping(path = {"/hashmap"})
    public String GetHtmlPage(@RequestBody Owner owner) {

        String htmlPage=contractsRepository.getById(1);

        //i need a solution like "binding" method. 
        //but i don't know which library i can use and
        //how can i do this implementation
        String htmlPageAfterBinding=binding(htmlPage,owner);        

        return htmlPageAfterBinding;
    }

htmlPage будет содержать строку, подобную этой:

...
  <p th:text="'Hello, ' + ${name} + '!'" />

  <tr th:each="book : ${books}">
        <td><span th:text="${book.title}"> Title </span></td>
        <td><span th:text="${book.author}"> Author </span></td>
  </tr>
...

, и я отправлю запрос json, подобный этому

{
   "name":"bookowner",
   "books":
  [
    {
           "title":"title1",
           "author":"author1"
    },
    {
        "title":"title2",
        "author":"author2"  
    }
   ]
}

myклассы моделей, подобные этим

  class Owner{
    ...
    String name;
    Book[] books;
    ...
}

  class Book{
    ...
    String title;
    String author;
    ...
}

Какое решение вы мне предлагаете?Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 июня 2019

Вы можете использовать StringTemplateResolver Thymeleaf для обработки шаблонов, поступающих из базы данных.

Например:

@Bean
public TemplateEngine stringTemplateEngine(StringTemplateResolver resolver) {
    TemplateEngine templateEngine = new TemplateEngine();
    templateEngine.setTemplateResolver(resolver);
    return templateEngine;
}

@Bean
public StringTemplateResolver stringTemplateResolver() {
    StringTemplateResolver resolver = new StringTemplateResolver();
    resolver.setTemplateMode(TemplateMode.HTML);
    return resolver;
}

После этого вы можете написать что-то вроде этого в своих контроллерах:

@GetMapping("/")
public String getResult(ModelMap modelMap) {
    Owner owner = new Owner("bookowner", Arrays.asList(
        new Book("title1", "author1"),
        new Book("title2", "author2")
    ));
    modelMap.addAttribute("owner", owner);

    return 
        "<p th:text=\"'Hello, ' + ${owner.name} + '!'\" />" +
        "<table>" +
            "<tr><th>Title</th><th>Author</th></tr>" +
            "<tr th:each=\"book : ${owner.books}\">" +
                "<td><span th:text=\"${book.title}\">Title</span></td>" +
                "<td><span th:text=\"${book.author}\">Author</span></td>" +
            "</tr>" +
        "</table>";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...