Результат привязки не работает пружинный ботинок - PullRequest
0 голосов
/ 13 ноября 2018

Я использую весеннюю загрузку и проверку.когда значение имени отсутствует, отображается страница ошибки Whitelabel.Я хочу передать его на страницу индекса с пользовательской ошибкой, например, отсутствует имя.

класс контроллера:

    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
        }

    }
}

1 Ответ

0 голосов
/ 16 января 2019

Чтобы отправить ошибки представлению, вам просто нужно добавить 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>

Это напечатает все сообщения об ошибках, связанных собъект.

Наблюдение: импортировать пружинные метки с

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...