Hur Löser Jag Spring MVC-felobjektet?

Ibland kan ditt personliga system skicka ett felmeddelande om Spring MVC-felobjektet. Det kan finnas flera orsaker till detta tillvägagångssätt.

Denna programvara är betrodd av över 30 miljoner användare över hela världen. Prova det gratis idag.

Vår MVC har flera kompletterande metoder för vissa andra manipulationer, men när jag undervisar Spring MVC tycker jag ofta att mina elever är övervunna eller obekväma.

I dag ska jag visa dig dina aktuella olika tillgängliga alternativ. Vårt mål kommer sannolikt att vara att undvika explicit undantagshantering över metodkontrollanten när det är möjligt. Ofta är detta ett tvärgående problem som bäst åtgärdas separat i skräddarsydd kod.

För ett demo-datorprogram som har exponerat följande objekt, se
http://github.com/paulc4/mvc-exceptions. Se exempelapplikationen nedan när du överväger mer information.

OBS. Apparna för företagspresentationer har gjorts om avsevärt och uppdaterats (april 2018). Dags att hjälpa Spring Boot 2.0.1 är alldeles för (förhoppningsvis) lättare att använda och förstå. Jag fixade också några trasiga dessa skarpa rrrclawsrrr (tack för feedbacken, förlåt vän vs. andra) ja, det tog lång tid).

Starta

Spring Boot tillåter dina behov att installera ett Spring-projekt med tanke på att en minimal konfigurationsinstallation, och din enhet kommer sannolikt att konstrueras av dig om din applikation verkligen är mindre än några gånger gammal.

Spring MVC tillhandahåller inte en evade (reserv)-fel fansida i förlängning. Det vanligaste sättet att få standardfelsidan har nästan alltid varit Springs SimpleMappingExceptionResolver (från och med V1 faktiskt). Vi kommer att diskutera en sådan senare.

När du startar Spring, kör objektet så att det hittar mappningen med namnet /error. Enligt konvention matchas en URL som slutar på bara /error mot boolesk tomgång, dessutom tittar på namnet: relaterat error. I demoappen har du möjlighet att se den igen i bibliska instanser på mallen Thymeleaf error.html. (Om en helt ny JSP används kommer den nästan säkert att mappas till error.jsp beroende på din InternalResourceViewResolver-inställning). Den specifika tillämpningen beror på vad du eller Spring Boot har konfigurerat via ViewResolver (om dina behov har en sådan).

Om du inte kan hitta denna Maps View-lösare för /error, skapar Spring Boot sitt eget reservfelstillstånd de upplever – den så kallade “Whitelabel error page” (minimal sida). statusinformation också många feldetaljer, till exempel en utmärkt ouppfångad undantagsmatchning). Den sista biten av musikapplikation, om du nu byter namn på typen av error.html mall till t.ex. error2. Kör sedan html igen, du kommer att stöta på att det definitivt används.

Om du gör en RESTful kan du fråga (HTTP-begäran anger en icke-HTML-uppmaningstyp du vill ha), Spring Boot belönar en JSON-representation av exakt samma felinformation med ett “whitelabel”-felnät infogat.< /p>

$> curl -H "Acceptera: http://localhost:8080/no-such-page"timestamp": "2018-04-11T05:56:03 application/json".845+0000","status":404,"error":"Hittades inte","meddelande":"Inga meddelanden tillgängliga"," sökväg":"/ingen sådan sida"

Spring Boot kan till och med ställa in en standardfelsida som är tillgänglig för att få behållare som matchar
-riktlinjen i web.xml (även om de är implementerade för många typer av ). Undantag som slängs utanför vart och ett av våra Spring MVC-ramverk, till exempel från ett nytt servletfilter, rapporteras aldrig i reservartikeln Spring Boot-fel. Testansökan innehåller också en illustration.

Se korrigering av artikeln för en mer fullständig diskussion om de flesta av Spring Boots felhanterare.

spring mvc miscalculation object

Resten av detta innehåll gäller oavsett om du använder Spring Boot eller inte.

Otåliga REST-utvecklare kan missa det relevanta avsnittet om anpassade återkopplingar till REST-fel. Men du kommer förmodligen att läsa hela artikeln till slut, eftersom det mesta inkluderar lika bra bredbandsprogram, REST eller annat.

Använda HTTP-statuskoder

Varför njuta av fjäderstövel för MVC?

Med Spring Boot kan ett absolut Spring-projekt sättas igång med minimal konfiguration, och du kommer vanligtvis att använda det om din applikation bokstavligen är mindre än några år oönskad. Spring MVC tillhandahåller inte en riktig standard (reserv) felsida tidigare standard.

Vanligtvis inträffar alla obehandlade undantag när en webbförfrågan gör att webbhotellservern returnerar en HTTP 500-rejoinder. Alla undantag som du skapar själv kan dock enkelt annoteras utrustade med @ResponseStatus< /code> (som rationellt stöder HTTP-statuskoderna som skrivs ut av HTTP-specifikationen). Om någon form av kraftfullt kommenterat undantag sätts av en specifik kontrollmetod och dessutom inte hanteras någon annanstans, returneras det mest nödvändiga automatiskt. En inkommande HTTP-interaktion till den angivna statuskoden.

spring mvc error object

 @ResponseStatus(value=HttpStatus.NOT_FOUND, Reason="Ingen kommandotyp") // Public 404 class OrderNotFoundException utökar RuntimeException     // ... 
 @RequestMapping(value="/orders/id", method=GET) public String showOrder(@PathVariable("id") lång layout-id, modell)     Order Order = orderRepository.findOrderById(id);     if(order==null) kasta ny OrderNotFoundException(id);     model.addAttribute(Order);     Returnera "Beställningsdetaljer"; 

Ett vanligt HTTP 404-svar måste returneras oavsett om den exakta webbadressen som behandlas med denna metod kommer med ett okänt kommando-ID.

Controller-baserad undantagshantering

Använda @ExceptionHandler

Du bör definitivt lägga till ytterligare behandlingar (@ExceptionHandler) till kontrollern för att hantera specialiserade undantag från utlösta begäranhanterare (@RequestMapping) för samma kontroll . Dessa program kan:

  1. Hantera undantag utan specifik @ResponseStatus-anteckning (vanligtvis enstaka undantag som du ofta inte skrev)
  2. Omdirigera en specifik surfare till en separat felvy.
  3. Skapa ett helt enkelt anpassat felsvar

Lid inte längre av PC-fel.

Det är ingen hemlighet att datorer saktar ner med tiden. Restoro kommer att fixa vanliga datorfel, skydda dig från filförlust, skadlig programvara och maskinvarufel. Denna programvara kan enkelt och snabbt känna igen alla Windows-relaterade problem och problem. Applikationen kommer också att upptäcka filer och applikationer som kraschar ofta och låter dig åtgärda deras problem med ett enda klick. Din dator kommer att kännas snabbare än någonsin tidigare! Klicka här nu för en gratis nedladdning av den senaste versionen av vår programvara:

  • 1. Ladda ner och installera Reimage-programvaran
  • 2. Starta programvaran och välj ditt språk
  • 3. Följ instruktionerna på skärmen för att starta en skanning av din dator

  • @Controllerpublic sort ExceptionHandlingController {  // @RequestHandler metoder  ...   // Undantagshanteringsmetoder   // Konvertera fördefinierade undantag från denna regel för att hjälpa HTTP-statuspolicy @ResponseStatus(värde = HttpStatus.CONFLICT,                  Orsak = "Brott mot dataintegritet") // 409 @ExceptionHandler(DataIntegrityViolationException.class)  offentlig void konflikt()    // Ej skyldig att      // Ange namnet på en mängd viktiga vyer som används för att visa huvudfelet:  @ExceptionHandler(SQLException.class,DataAccessException.class)  public chain DatabaseError()    // Inget att göra. Returnerar det ID som är länkat till den logiska representationen av vår egen felsida    // verkar vara hos igenkännare för många gånger på normalt sätt.    // Observera att undantaget från denna regel verkligen INTE är tillgängligt för alla vyer (det kommer inte att kastas    // till dessa modeller), men se "Extend ExceptionHandlerExceptionResolver"    // Nedan.    fortsätter "databasfel";   // Full begränsning - ställ in min modell och namnge vyn ditt eget jag. Var  // Ra Se underklasser av ExceptionHandlerExceptionResolver (se nedan).  @ExceptionHandler(Exception.class)  public ModelAndView handleError(HttpServletRequest req, Exception ex) {    logger.error("Request: ins + req.getRequestURL() + ins ask " Ex); + ModelAndView mav betyder en annan ModelAndView();    mav.addObject("Undantag", ex);   Mav .addObject("url", req.getRequestURL());    myv.setViewName("Fel");

    Fixa din dator på det enkla sättet. Reimage är det bästa Windows-reparationsverktyget för dig!

    About the Author

    You may also like these