当前位置: 首页 > 知识库问答 >
问题:

Spring MVC,重定向时如何将参数传递到thymeleaf视图

裴兴言
2023-03-14

我在我的web应用程序中使用SpringMVC和thymeleaf。

在其中一个场景中,我有一个控制器,在其功能结束时执行重定向。我需要向前端传递一个参数(实际上是一条成功/失败警报消息)。如何实现此行为。

我可以知道model.add属性()不能在重定向时实现。

以下是控制器代码。

@RequestMapping(value = "delete", method = RequestMethod.GET)
public ModelAndView deleteForm544(@RequestParam("id") final Long inForm544Id) {

    logger.info("Hit the /Form544/delete ");
    logger.info("Change Status Deleted of Form 544 ID : " + inForm544Id);

    JSONObject alertObj = new JSONObject();

    try {
        form544Service.setStatusAsDeleted(inForm544Id);

        alertObj.put("type", "success");
        alertObj.put("msg", "Successfully deleted Form 544 with ID Number " + inForm544Id);

    } catch (Exception e) {
        logger.error("Error occured " + e);

        alertObj.put("type", "fail");
        alertObj.put("msg", "Form 544 deletion failed. Due to " + e.getMessage());
    }

    return new ModelAndView("redirect: filter_view");
}

下面是视图(thymeleaf)代码。[注意:我需要获取javascript变量的值]

<script th:inline="javascript">

    /*<![CDATA[*/
    var alertObj = ([[${alert}]]);
    /*]]>*/

</script>

共有1个答案

公孙联
2023-03-14

最后参考一些文章,我可以使用RedirectViewredirectAttributes找到解决方案。setFlashAttributes()

以下是控制器(Spring MVC)功能:

@RequestMapping(value = "delete", method = RequestMethod.GET)
public RedirectView deleteForm544(@RequestParam("id") final Long inForm544Id,
        RedirectAttributes redirectAttributes) {

    logger.info("Hit the /Form544/delete ");
    logger.info("Change Status Deleted of Form 544 ID : " + inForm544Id);

    JSONObject alertObj = new JSONObject();

    try {
        form544Service.setStatusAsDeleted(inForm544Id);

        alertObj.put("type", "success");
        alertObj.put("msg", "Successfully deleted Form 544 with ID Number " + inForm544Id);

    } catch (Exception e) {
        logger.error("Error occured " + e);

        alertObj.put("type", "fail");
        alertObj.put("msg", "Form 544 deletion failed. Due to " + e.getMessage());
    }

    RedirectView redirectView = new RedirectView();
    redirectView.setContextRelative(true);
    redirectView.setUrl("filter_view");
    redirectAttributes.addFlashAttribute("alert", alertObj);

    return redirectView;
}

下面是视图(Thymeleaf)代码。[注意:我得到一个JavaScript变量的警报响应]

<script th:inline="javascript">

     /*<![CDATA[*/
    var alertObj = ([[${alert}]]);
    /*]]>*/

</script>
 类似资料:
  • 问题内容: 在flask中,我可以这样做: 并且如果foo.html包含,页面将会显示。但是,如果有一条通往foo的路线怎么办: 在这种情况下,如果我仍然希望这种逻辑发生,那么进入foo.html的唯一方法是通过: 因此,如何使该变量传递到路由,这样我不必在加载路由之前重写重写该路由计算的逻辑代码? 问题答案: 你可以将消息作为显式URL参数传递(正确编码),也可以在重定向之前将消息存储到(coo

  • 问题内容: 在我的RCP应用程序中,左侧有一个用于导航的视图,右侧有一个用于视图的文件夹。透视图看起来像这样: 我想根据用户在导航树中选择的内容打开不同的视图。认为这并不难。我的导航树视图: 这似乎很好。仅有一个小问题:我需要以某种方式将对象(例如,selectedItem)传递给我的视图,以使用户与其内容进行交互。我怎么做? 我看到了一些示例,其中一些同事编写了自己的视图,并将其放置在右侧。然后

  • 问题内容: 我正在尝试使用Struts2实现以下目标 这就是我在做什么: 为什么以上内容不能重定向为以下任何建议: 问题答案: 到目前为止,对我有用的解决方案是 在操作中定义味精的设置者和获取者的位置

  • 我在使用thymeleaf 3将参数从html传递到spring mvc 4控制器时遇到了麻烦。 我还有一个类Currency,它带有字段“id”和“name”,以及它们的getter和setter。现在使用这段代码,我得到一个错误: 严重:路径为[]的上下文中servlet[dispatcher]的servlet.service()引发异常[请求处理失败;嵌套异常为org.thymeleaf.e

  • 将函数绑定到按钮是简单明了的: 但我看不到一种向函数传递参数(参数)的方法,当我这样做时: 该函数在页面加载时调用,并且不再调用。 是否有可能将参数传递给从? null null 我只是找到了一个很奇怪的方法。从内联处理程序调用该函数可以工作。

  • 我试图在不同的浏览器下运行cumber测试,所以我有(是的,目前只有一个浏览器) 在这个TestNG runner类中,我可以从这个runner类中访问参数,但是我需要将这个变量传递给Cucumber,根据传递的变量创建浏览器实例。到目前为止,我在没有TestNG的情况下使用它,我通过环境变量传递这些变量,但是我假设如果我在不同的浏览器上并行运行测试,这将不起作用。 有没有办法做到这一点?