Как обрабатывать переменные из контроллера Spring, используя javascript? - PullRequest
1 голос
/ 29 января 2020

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

Контроллер

@RequestMapping(path = "/editSchema/{id}")
public String editSchemaById(Model model, @PathVariable("id") Integer id)
{
    model.addAttribute("message", "why this isn't working...");
    return "redirect:/drawdiagram";
}

JavaScript Drawdiagram. html

<script th:inline="javascript">
    /*<![CDATA[*/
    var message = /*[[${message}]]*/ 'default';
    /*]]>*/
</script>

Результат

enter image description here

Кто-нибудь может сказать мне, почему у меня там ноль?
Я действительно не знаю, что происходит: (
Может быть, это плохой способ? Я выбрал тимелист, но, может быть, есть какой-то другой способ?

Все, что я нужно сделать:
1. Нажать кнопку.
2. Выполнить некоторый внутренний код и получить данные для переменной в контроллере.
3. Перенаправить на другую страницу.
4. Выполнить некоторые JavaScript код, основанный на этой переменной.

.

Источники:

  1. https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#script -inlining- javascript -and-dart
  2. Настройка переменной JavaScript из модели Spring с помощью Thymeleaf

1 Ответ

1 голос
/ 30 января 2020

вы перенаправляете на другой контроллер drawdiagram, значения в объекте модели не будут доступны в другом контроллере. Так что здесь вам нужно сначала установить значение, используя RedirectAttributes#addFlashAttribute или RedirectAttributes#addAttribute, а затем получить значение в другом контроллере, используя @ModelAttribute("message").

@RequestMapping(path = "/editSchema/{id}")
public String editSchemaById(Model model, @PathVariable("id") Integer id, RedirectAttributes redirectAttributes)
{
    redirectAttributes.addFlashAttribute("message", "why this isn't working...");
    return "redirect:/drawdiagram";
}

@RequestMapping(value = "drawdiagram", method = RequestMethod.GET)
public String OtherController(@ModelAttribute("message") String message, Model model) {
    model.addAttribute("message", message);
    return "drawdiagram";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...