Добавить код в тег заголовка html из переменной с помощью Thymeleaf (Spring) - PullRequest
0 голосов
/ 05 октября 2019

У меня есть веб-приложение, написанное с помощью Spring Boot и Thymeleaf. Мне нужно динамически добавить собственный «код» внутри тега HTML-заголовка. Этот пользовательский «код» хранится внутри переменной в объекте модели Spring. Я пробовал много способов, но ни один из них, кажется, не работает. Вот все способы, которые я тестировал:

<head>
   #1 [[${headCode}]]
   #2 <div th:text="${headCode}"></div>
   #3 <span th:text="${headCode}"></span>
   #4 <div th:html="${headCode}"></div>
   #5 <div th:text="${headCode}" th:remove="tag"></div>
   #6 <div th:html="${headCode}" th:remove="tag"></div>
   #7 <span th:text="${headCode}" th:remove="tag"></span>
</head>

Пример: допустим, у нас есть этот контроллер Spring, который помещает определенный код в переменную модели "headCode":

@GetMapping
public String getPage(Model model){
   String headCode = "<script>
        console.log('1');
        </script>
        <script>
        console.log('2');
        </script>
        <script>
        console.log('3');
        </script>"
   model.addAttribute("headCode", headCode);
   return "page";
}

Я бынапример, на визуализированной html-странице есть что-то вроде этого:

<html>
<head>
   [head content]
   <script>
        console.log('1');
   </script>
   <script>
        console.log('2');
   </script>
   <script>
        console.log('3');
   </script>
</head>
<body>
   [body content]
</body>
</html>

У меня нет фиксированного кода, который я имел, я не могу жестко закодировать его внутри раздела head, поэтому мне нужно выяснитьдругой способ вставить его в головной части. Например, этот пользовательский код может быть пикселем Facebook, который я должен изменять каждый раз, когда мне это нужно. Есть идеи?

1 Ответ

0 голосов
/ 05 октября 2019

Возможно, вам следует попробовать фрагмент, который заменяет весь элемент заголовка и передает любую переменную, которая вам нужна, в подписи фрагмента.

В официальных документах есть пример этого:

https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#parameterizable-fragment-signatures

<header th:fragment="contentheader(title)" th:assert="${!#strings.isEmpty(title)}">...</header>

Надеюсь, что эта помощь!

Вот рабочий пример того, как настроить конечную точку, с данными из контроллера:

@GetMapping(VIEW_NAME)
  public ModelAndView viewPage() {
    ModelAndView modelAndView = new ModelAndView(VIEW_NAME);
    modelAndView.addObject("yourDto", new YourDto());
    return modelAndView;
  }

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

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