2015-10-09 4 views
1

J'utilise Spring Boot et FreeMarker.Comment créer un contrôleur pour afficher un modèle d'erreur personnalisé dans Spring Boot

Pour rendre l'en-tête, j'ai besoin de placer un objet créé dynamiquement dans le modèle. Idem pour rendre le pied de page. J'ai un page.ftl que tous les autres modèles incluent afin que chaque page ait un en-tête et un pied de page.

Je veux afficher une page 404 qui affiche également cet en-tête et ce pied de page, donc idéalement la vue de cette page devrait être un modèle de marqueur libre.

Je remarque que si j'ai un error.ftl, Spring Boot l'utilisera en cas d'erreur, mais où puis-je mettre une logique qui ajoute l'en-tête et le pied de page pour que ma page d'erreur soit belle?

Répondre

1

La réponse était de créer un @ControllerAdvice

A l'intérieur il y a une méthode annotée avec @ResponseStatus (HttpStatus.NOT_FOUND) et @ExceptionHandler pour son propre PageNotFoundException du projet. Cette méthode retourne un objet ModelAndView où je peux mettre le nom de n'importe quelle vue que je veux rendre (peu importe si c'est FreeMarker ou non). À l'intérieur de la méthode, je construis l'en-tête et le pied de page.

La même chose peut être faite pour une page de 500 pages.