Forms &引用${#fields.hasErrors(';*';)}";总是错误-重定向问题

Forms &引用${#fields.hasErrors(';*';)}";总是错误-重定向问题,forms,validation,spring-mvc,thymeleaf,Forms,Validation,Spring Mvc,Thymeleaf,我的控制器如下所示: @PostMapping("/event/{id}") public String save(@PathVariable("id") long id, @Valid Form form, BindingResult bindingResult ) { if (!bindingResult.hasErrors()) { //No errors //No return }

我的控制器如下所示:

    @PostMapping("/event/{id}")
    public String save(@PathVariable("id") long id, @Valid Form form, BindingResult bindingResult ) {

        if (!bindingResult.hasErrors()) {
          //No errors
          //No return
        }

        return "redirect:/event/{id}";               
    }
我的@GetMapping是:

 @GetMapping("/event/{id}")
    public ModelAndView eventDetail(@PathVariable("id") long id) {

        ModelAndView model = new ModelAndView("event/details");
        Event event = eventoRepository.findById(id).get();
        model.addObject("event", evento);
        model.addObject("guests", event.getGuests());
        model.addObject("guest",new Guest());

        return model;

    }
我知道“${#fields.hasErrors('*')}”总是错误的,因为重定向。(对吗?)

如何在不重定向的情况下返回到此路径
/event/{id}

我知道“${#fields.hasErrors('*')}”总是错误的,因为重定向。(对吗?)

对。看起来你总是重定向。因为调用了一个用
@GetMapping(“/event/{id}”)
注释的方法,表单很可能被重置为新状态,并且没有更多的错误使表达式始终
为false

如何在不重定向的情况下返回到此路径/事件/{id}

只需返回包含表单的视图(模板)的名称。很可能它与用
@GetMapping(“/event/{id}”)
注释的方法返回的内容相同

你应该遵循一种来自的方法。如果表单包含错误,则返回而不重定向,否则重定向

编辑: 还应为模型提供其他对象。您可以将公共对象提取到带有
@modeldattribute
注释的方法中,而不是在每个方法(Get、Post等)中填充模型。根据该方法,该方法可以接受类似于用
@RequestMapping
注释的方法的参数

对于您的情况,类似这样的方法应该可以很好地工作:

@modeldattribute
void supplyModel(@PathVariable(“id”)长id,模型){
Event=eventoRepository.findById(id.get();
model.addAttribute(“事件”,evento);
model.addAttribute(“guests”,event.getGuests());
model.addAttribute(“guest”,newguest());
}
@GetMapping(“/event/{id}”)
公共字符串eventDetail(@PathVariable(“id”)长id){
返回“事件/详细信息”;
}
@后期映射(“/event/{id}”)
公共字符串保存(@PathVariable(“id”)长id、@Valid Form、BindingResult){
if(bindingResult.hasErrors()){
//有错误
返回“事件/详细信息”;
}
//没有错误
返回“重定向:/event/”+id;
}

如果我直接返回模板,我将丢失用于渲染模板的模型。我的@GetMapping to“event/{id}添加一些呈现我的页面所需的模型。如果我直接返回模板,我页面中的一些数据将为空。我在原始模板中添加@GetMappingpost@GlaucoTodesco我已经更新了我的答案。希望它能解决你的问题。干杯!