Передача JSON String к Thymeleaf HTML - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь передать эту строку в HTML и получить доступ к ее свойствам с помощью тимелина:

@GetMapping("/")
public ModelAndView getHome(){
    ModelAndView mv = new ModelAndView();
    mv.addObject("myjson", "{indexid: \"42\", city: \"Flin Flon\"}");
    return mv;
}

И в HTML:

<p th:text="${myjson}"></p>

Это возвращает: {indexid: "42", city: "Flin Flon"}

<p th:text="${myjson.city}"></p>

Возвращает: Exception evaluating SpringEL expression: "myjson.city"

Я также попробовал следующее:

ObjectMapper mapper = new ObjectMapper();
String jsonString = "{\"indexid\": \"42\", \"city\": \"Flin Flon\"}";
JsonNode actualObj = mapper.readTree(jsonString);
mv.addObject("myjson", actualObj);

И выдает ту же ошибку.

1 Ответ

0 голосов
/ 31 января 2020

Вы не должны добавлять json строк в модель. Вместо этого вы должны добавить настоящий Java объект с такими же свойствами. Например:

public class Location {
  String id;
  String city;

  public Location(String id, String city) {
    this.id = id;
    this.city = city;
  }

  // Add your getters and setters
}

Затем, если вы добавите этот объект в модель:

mv.addObject("location", new Location("42", "Flin Flon"));

Вы сможете получить доступ к этому объекту в вашем html:

ID: <span th:text="${location.id}" /><br />
City: <span th:text="${location.city}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...