DXA Javaステータスコードをファイルに送信できません。


4

CDサイドのSDL Tridion 2013 SP1、Oracle 12c(CM & CD)およびJavaを使用してWebサイトで作業しています。ウェブサイト上の無効なURL(ウェブサイト上に存在しないリンク)は、404ファイルを送信するのではなく、500個のサーバーエラーステータスコードを生成しています。誰かがこれを修正する方法について親切に助言することができます。

  0

http://tridion.stackexchange.com/questions/12686/dxa-web-application-java-issues-while-creating-a-new-page - 多分これが役に立ちます:-) 31 12月. 152015-12-31 09:28:31

  0

私は似ています非常に早いバージョンでdxa.netで問題が発生した場合、DXAは、URLが接尾辞などを介して "/"で終わるとページを推測しようとします。もしその推測URLがブローカに存在しなければ。それは500をスローする。 01 1月. 162016-01-01 17:04:04

  0

あなたのコメントをありがとう。私はSDLに連絡し、これがJava-DXAのプレリリース版のバグであると知らされました。 05 1月. 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); 

}

上記のコードでは、上述の問題を修正し、正しくないことがわかったファイルの404のステータスコードを返します。