我正在使用Spring Boot和验证。当名称的值不存在时,将显示“白色标签错误页面”。我想将其传递给缺少名称的自定义错误的索引页。
控制器类为:
package com.springs.springs.com.springs.springs.controller;
import com.springs.springs.hibernate.Employee;
import com.springs.springs.hibernate.EmployeeServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import javax.validation.Valid;
import java.util.List;
@Controller
@Validated
public class URLController {
@Autowired
EmployeeServiceImpl empService;
@GetMapping({"/", "/index"})
public String index1(Model model){
model.addAttribute("employee",new Employee());
return "index";
}
@PostMapping("/result")
public String result( @ModelAttribute @Valid Employee employee, BindingResult bindingResult){
List<FieldError> errors = bindingResult.getFieldErrors();
for (FieldError error : errors ) {
System.out.println (error.getObjectName() + " - " +error.getDefaultMessage());
}
System.out.print(employee.getName()== null); //use a logger instead
if(bindingResult.hasErrors()){
return "index";
}
else {
empService.save(employee);
return "result"; //may want to return a different page name for clarity
}
}
}
答案 0 :(得分:0)
要将错误发送到视图,您只需要将RedirectAttributes作为参数添加到方法中,然后将错误发送到视图。
这种方式:
public String result( @ModelAttribute @Valid Employee employee, BindingResult bindingResult, RedirectAttributes redirectAttributes){
并且:
if(bindingResult.hasErrors()) {
redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.employee", bindingResult);
redirectAttributes.addFlashAttribute("employee", employee);
return "index";
}
在视图上(也许是JSP),您应该导入de spring taglib并使用:
<spring:hasBindErrors name="employee">
<form:errors path="*" />
</spring:hasBindErrors>
这将打印与该对象有关的所有错误消息。
观察:使用
导入spring标签<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>