2014-10-06 9 views
5

vorrei avere personalizzato pagina di errore 404 .I hanno velocità nel mio percorso di classe, ma non voglio usare la velocità vista resolver Qui di seguito è il mio codiceprimavera per 404

@EnableAutoConfiguration(exclude={VelocityAutoConfiguration.class}) 
@ComponentScan 
public class Application { 
Properties props = new Properties(); 

public static void main(String[] args) { 
    SpringApplication.run(Application.class, args); 
} 
} 

io sono non è in grado di reindirizzare tutti i 404 al mio qualche html nella directory delle risorse.

Si prega di aiutare

P.S E funziona se io sono uso velocityresolver e hanno error.vm nella directory dei modelli.

Grazie ans riguarda

risposta

11

è possibile fornire un EmbeddedServletContainerCustomizer e aggiungi le pagine (per esempio statico) di errore c'è. Vedi Error Handling nei documenti di avvio di primavera. Per esempio:

@Bean 
public EmbeddedServletContainerCustomizer containerCustomizer() { 
     return new EmbeddedServletContainerCustomizer() { 
      @Override 
      public void customize(ConfigurableEmbeddedServletContainer container) { 
       container.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/404.html")); 
      } 
     }; 
} 
+0

Grazie, ha funzionato, anche se ho provato la stessa cosa e non ha funzionato prima (ho passato un paio d'ore a sbattere la testa contro il muro). Suppongo che tu abbia bisogno di una cartella statica per avere htmls, avevo il mio 404.html nella cartella delle risorse. –

+1

Sì, i file statici devono essere nella cartella statica. Ma puoi configurare altre posizioni in cui vuoi che vengano serviti i file statici e puoi anche usare una vista qui (invece di un file statico). – cfrick

+3

@cfrick, come useresti una vista invece di un file statico? –

8

partire dalla primavera Boot 1.4.x:

Se si desidera visualizzare una pagina di errore HTML personalizzato per un determinato codice di stato, è possibile aggiungere un file a una cartella /error. Le pagine di errore possono essere HTML statico (ad esempio aggiunto in una delle cartelle di risorse statiche) o costruito utilizzando i modelli. Il nome del file deve essere il codice di stato esatto (ad esempio 404) o una maschera di serie (ad esempio 5xx).

Ad esempio, per mappare 404 in un file HTML statico, la struttura delle cartelle sarebbe simile a questa:

src/ 
+- main/ 
    +- java/ 
    | + <source code> 
    +- resources/ 
     +- public/ 
      +- error/ 
      | +- 404.html 
      +- <other public assets> 

Per mappare tutti 5xx errori usando un modello freemarker, devi avere una struttura come questa:

src/ 
+- main/ 
    +- java/ 
    | + <source code> 
    +- resources/ 
     +- template/ 
      +- error/ 
      | +- 5xx.ftl 
      +- <other templates> 

Checkout la Spring Boot documentation per una discussione più dettagliata.