Визуализировать переменную как HTML в Java Spring Thymeleaf - PullRequest
0 голосов
/ 09 июля 2020

В моем. java файле у меня есть

@RequestMapping(value = "/page1", method = RequestMethod.GET)
public String callback(@RequestParam(name = "token") String token, Model model){
    //do something with token
    //result variable is either 
    //"<p style=\"color:red;font-size:20px\"><strong>fail</strong></p>" 
    //or 
    //"<p style=\"color:green;font-size:20px\"><strong>pass</strong></p>"
    model.addAttribute("result", result);
    return "page1";

на моей странице 1. html файл:

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" />
    <title>Page1</title>
</head>
<body>
<p th:text="'here is the result: ' + ${result}"></p>
</body>
</html>

Прямо сейчас на моей странице 1 отображается:

here is the result: <p style="color:green;font-size:20px"><strong>pass</strong></p>

Можно ли отобразить мою переменную результата как html, чтобы на моей странице page1 отображался большой зеленый проход? Существуют ли другие варианты форматирования, кроме th: text + $ {var}? Я использую Spring boot и тимелеафа. Я стараюсь не использовать для этого javascript.

Примерно так это , а для java

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

Это плохое сочетание представления и семантики на уровне контроллера и плохое сочетание содержимого и стиля на уровне HTML. Вместо этого используйте логический атрибут для result и используйте th:if или аналогичный для переключения содержимого HTML в вашем шаблоне и избегайте встроенных стилей в пользу чего-то вроде class="success".

1 голос
/ 09 июля 2020

используйте этот:

th:utext="'here is the result: ' + ${result}"
...