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

Spring-boot:重定向和刷新模型和页面

裴和怡
2023-03-14
@GetMapping("/suggested-events/vote/{eventId}")         
public String voteForEvents(Model model,
                            @PathVariable("eventId") Long eventId,
                            @RequestParam(value = "message", required = false) String message ) {
    log.info("The message is: "+message);
    SuggestedEvent event = suggestedEventService.findSuggestedEventById(eventId);
    ArrayList<SuggestedEvent> events = suggestedEventService.findSuggestedEventsByArea(event.getArea());
    model.addAttribute("mainEvent",event);
    model.addAttribute("events",events);
    model.addAttribute("message",message);

    return "/suggested-event/vote";
}
@PostMapping("/suggested-events/vote")
public String voteForASuggestedEvent(RedirectAttributes redirectAttributes){
    log.info("You have made a vote");
    redirectAttributes.addAttribute("message", "Success");

    return "redirect:/suggested-events/vote/1";
}
log.info("The message is: "+message);

当我重定向到第一个方法时,我希望它将消息添加到我的模型中:

model.addAttribute("message",message);

但它没有添加到我的页面

共有1个答案

蓬琦
2023-03-14

当在视图中按下按钮时,它会触发下面的post方法:

听起来这个触发器使用的是AJAX,而不是表单提交。这样做会符合你描述的症状。

如果使用AJAX将发送/summited-events/vote,服务器将返回一个302,浏览器将跟随它。但是,302的响应仍然是AJAX调用的结果。您可以在success回调中访问它,但浏览器不会为您呈现它。

这可以通过使用vote.html中的以下两个按钮来验证:

  <form action="http://localhost:8080/suggested-events/vote" method="POST">
    <input type="submit" text="Submit" />
  </form>

  <button onclick="postmessage();" >Button</button>

  <script>
    function postmessage() {
        $.ajax({
            method: 'POST',
            data: {},
            url: 'http://localhost:8080/suggested-events/vote'
        });
    }
  </script>

第一个按钮将按预期工作,第二个按钮与您描述的症状相匹配。

如果您已经在使用表单,请用它更新问题(或者更好的是,更新整个Thymeleaf模板)。

 类似资料:
  • 问题内容: 我正在渲染一个带有react的链接: 然后,上面有upvote函数: 在链接建立之前,我已经跨过那个地方,但是我需要切换到链接,这就是麻烦了-每次我刷新页面时,到目前为止,我已经尝试过以下操作: event.preventDefault()-不起作用。 event.stopPropagation()-不起作用。 返回false-不起作用。 我还在index.html中使用jQuery尝

  • 我在我的Angular 5应用程序中使用keycloak JavaScript适配器,虽然我的登录和重定向工作,但问题是每当我刷新我的ng应用程序时,它会再次要求keycloak登录,尽管我看到我的会话仍然在 /auth/realms/{image a领域名称}/帐户上处于活动状态。 正如我从KeyClope JS适配器文档中了解到的那样https://www.keycloak.org/docs/

  • 我将Spring STS与Pivotal3.1服务器(端口8080和8443)一起使用,我还在运行在80和443上的box上有一个单独的Tomcat7实例。 我使用Spring Boot1.2.4版本。 我怎样才能达到同样的使用Spring靴请? 谢谢,Adrian

  • 我保证,我已经谷歌了这一切。 我有一个Spring MVC 4应用程序,它使用Thymeleaf收集表单数据并将其放入数据库。效果很好,只是我希望我的应用程序在用户点击提交按钮后将其留在表单页面上,以便他们可以继续编辑。 每次单击提交时,都会调用控制器并返回视图,从而刷新页面。我想消除刷新,并添加一个警报以确认保存。 所以我开始将表单提交转换为AJAX,并意识到这将违背使用Thymeleaf的目的

  • 或者,如果有其他方法来完成这项任务? AuthenticationController.Java

  • 我有一个用Spring MVC@RESTController实现的RESTendpoint。有时,取决于我的控制器中的输入参数,我需要在客户机上发送http重定向。 Spring MVC@RESTController是否可能?如果可以,请给出一个示例?