【问题标题】:How to handle variable from Spring controller using javascript?如何使用javascript处理来自Spring控制器的变量?
【发布时间】:2020-05-14 12:50:32
【问题描述】:

伙计们,在我的控制器中执行休息后,我无法从变量中获取数据。这是显示我的问题的示例。

控制器

@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>

结果

任何人都可以告诉我为什么我在那里有 null 吗?
我真的不知道发生了什么:(
也许这是不好的方式?我选择了百里香叶,但也许还有其他方法?

我需要做的就是:
1. 点击按钮。
2. 执行一些后端代码并获取数据到控制器中的变量。
3. 重定向到其他页面。
4. 执行一些基于该变量的 JavaScript 代码。

.

来源:

  1. https://www.thymeleaf.org/doc/tutorials/2.1/usingthymeleaf.html#script-inlining-javascript-and-dart
  2. Setting up a JavaScript variable from Spring model by using Thymeleaf

【问题讨论】:

    标签: javascript spring spring-boot thymeleaf


    【解决方案1】:

    您正在重定向到另一个控制器drawdiagram,模型对象中的值在其他控制器中将不可用。所以这里你需要先使用RedirectAttributes#addFlashAttributeRedirectAttributes#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";
    }
    

    【讨论】:

      猜你喜欢
      • 2013-05-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      相关资源
      最近更新 更多