8
respostas

Spring Error

Pessoal, tudo bem? Então queria uma ajuda para saber qual a melhor forma de mapear o /error do spring, em especial este.

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Wed Mar 28 14:50:32 BRT 2018
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='tabela'. Error count: 1
8 respostas

Oi Igor, tudo bem ?

Basicamente, todo erro que ocorre o Spring chama um request para /error basta você ter um controller, seguindo esse exemplo: http://www.baeldung.com/custom-error-page-spring-mvc

Onde fica esse web xml? Meu projeto spring não tem ele não.

Seu projeto é o que ? Spring MVC ? Spring Boot ?

Spring Boot, eu implementei a classe que voce pediu e ainda ta dando o mesmo erro(quando eu forço o mesmo digitando uma letra em um campo que o banco espera um double).

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Mar 29 12:02:46 BRT 2018
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='tabela'. Error count: 1

A classe!

@Controller
public class NotFound extends RuntimeException{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @RequestMapping(value = "errors", method = RequestMethod.GET)
     public ModelAndView renderErrorPage(HttpServletRequest httpRequest) {

        ModelAndView erPage = new ModelAndView("errorPage");
        erPage.addObject("O campo valor nao foi preenchido corretamente");
        return erPage;
    }    
}

Coloca o value como error invés de errors

Ainda sim está retornando a mesma mensagem

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Thu Mar 29 15:01:24 BRT 2018
There was an unexpected error (type=Bad Request, status=400).
Validation failed for object='tabela'. Error count: 1

me mostra como está ?

Sim,sim. Classe que mapeia o erro

package com.servidor.igor.resource;

import org.apache.catalina.servlet4preview.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class NotFound extends RuntimeException{

      private static final long serialVersionUID = 1L;

        @RequestMapping(value = "error", method = RequestMethod.POST)
         public ModelAndView renderErrorPage(HttpServletRequest httpRequest) {

            ModelAndView erPage = new ModelAndView("errorPage");
            erPage.addObject("O campo valor nao foi preenchido corretamente");
            return erPage;
        } 

}

Controller

package com.servidor.igor.resource;

import java.sql.SQLException;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import com.servidor.igor.model.Tabela;
import com.servidor.igor.repositorio.TabelaRep;

@Controller
@RequestMapping("/lista")
public class TabelaResource {
    @Autowired
    private TabelaRep rep;

    @RequestMapping(method = RequestMethod.GET, produces = "application/json")
    public @ResponseBody HttpEntity<Object> listAll(@RequestParam(name = "id", required = false) Long id) {

        if (id != null) {
            Tabela tab = rep.findById(id).get();
            return ResponseEntity.ok(tab);
        }

        List<Tabela> tab = rep.findAll();
        return ResponseEntity.ok(tab);
    }

    @RequestMapping(method = RequestMethod.POST)
    public String save(@ModelAttribute Tabela tabela) {
        rep.save(tabela);
        return "redirect:/index.html";
    }

}