DXA Java envoi du code d'état 500 pour le fichier non trouvé


4

Nous travaillons sur un site Web utilisant SDL Tridion 2013 SP1, Oracle 12c (CD & CD) et Java du côté CD. Toutes les URL non valides sur le site Web (liens qui n'existent pas sur le site Web) génèrent 500 code d'état d'erreur de serveur au lieu d'envoyer un fichier 404 introuvable. Quelqu'un peut-il aimablement conseiller sur la façon de résoudre ce problème.

  0

Découvrez http://tridion.stackexchange.com/questions/12686/dxa-web-application-java-issues-while-creating-a-new-page - peut-être cela aidera :-) 31 déc.. 152015-12-31 09:28:31

  0

question dans dxa.net dans une version très antérieure, DXA essaie de deviner la page si l'URL se termine par "/" via l'index de suffixe etc. si cette URL n'existe pas dans le courtier. il jette 500. 01 janv.. 162016-01-01 17:04:04

  0

Merci pour vos commentaires. J'ai contacté SDL et j'ai été informé qu'il s'agissait d'un bug dans la version préliminaire de Java-DXA. 05 janv.. 162016-01-05 10:11:13

1
/** 
* Handles a {@code NotFoundException}. 
* 
* @param request The request. 
* @return The name of the view that renders the "not found" page. 
*/ 


public String handleNotFoundException(HttpServletRequest request, HttpServletResponse response) throws Exception { 
    String path = webRequestContext.getLocalization().getPath(); 
    String notFoundPageUrl = (path.endsWith("/") ? path : path + "/") + "error-404"; 

    Page pageModel; 
    try { 
     pageModel = contentProvider.getPageModel(notFoundPageUrl, webRequestContext.getLocalization()); 
    } catch (ContentProviderException e) { 
     LOG.error("Could not find error page", e); 
     throw new HTTPException(SC_NOT_FOUND); 
    } 

    if (!isIncludeRequest(request)) { 
     request.setAttribute(PAGE_ID, pageModel.getId()); 
    } 

    request.setAttribute(PAGE_MODEL, pageModel); 
    request.setAttribute(LOCALIZATION, webRequestContext.getLocalization()); 
    request.setAttribute(MARKUP, markup); 
    request.setAttribute(SCREEN_WIDTH, mediaHelper.getScreenWidth()); 

    response.setStatus(SC_NOT_FOUND); 
    return this.viewResolver.resolveView(pageModel.getMvcData(), "Page", request); 

}

Le code ci-dessus résout les problèmes mentionnés et renvoie correctement un code d'état 404 pour le fichier non trouvé.