Как реализовать пользовательскую страницу ошибок 404 в App Engine, Java? - программирование
Подтвердить что ты не робот

Как реализовать пользовательскую страницу ошибок 404 в App Engine, Java?

Привет, я пытаюсь настроить статическую страницу ошибки для 404 не найденных ошибок в движке приложения.

Согласно https://developers.google.com/appengine/docs/java/config/webxml#Error_Handlers: он говорит, что 404 нельзя настроить.

И в соответствии с: https://developers.google.com/appengine/docs/java/config/appconfig#Custom_Error_Responses он, похоже, не поддерживает 404.

Однако https://groups.google.com/forum/?fromgroups=#!topic/google-appengine-java/3C-pY5ta2HQ кажется, что можно настроить страницу ошибок 404. Я запутался прямо сейчас.

4b9b3361

Ответ 1

Я понял, что эта проблема возникает при запуске приложения на локальном dev-сервере. однако, когда я развертываю приложение в приложении. Я вижу страницу ошибки 404, которая была настроена с помощью web.xml. спасибо за вашу помощь.

Ответ 2

Почему бы вам не использовать Java EE < error-page > запись для этих целей?

в вашем web.xml:

<error-page>
    <error-code>404</error-code>
    <location>/app/error/404</location>
</error-page>
....
<error-page>
    <error-code>500</error-code>
    <location>/app/error/500</location>
</error-page>

Вы можете объединить его с Spring и получить общий контроллер ошибок, например:

....   
@Controller
public class ErrorController {

@RequestMapping(value = "/error/{errorCode}")
public final String errorCode(
        @PathVariable("errorCode") final String errorCode,
        final ModelMap modelMap) {
    modelMap.put("statusCode", errorCode);
    return "redirect:/ui/error.htm";
}

и ваш jsp-подобный файл:

<h2>Error!!!</h2>
....
<h3>Status code: #{param.statusCode}</h3>

Надеюсь, что это поможет.

Ответ 3

Вы правы, это в настоящее время недоступно в Java на App Engine. Однако для Python существует обходной путь. Например, вы можете посмотреть GAE Boilerplate.

Надеюсь, что это поможет.

Ответ 4

Мне удалось получить 404 ошибки, успешно перенаправленные в SDK версии 1.6.1 и более ранних версий на моем локальном сервере. Однако после обновления до GAE SDK 1.7.5 я не могу заставить его работать локально. С тех пор я прочитал, что он в настоящее время не поддерживается для 404, как указано выше.

Ответ 5

В версии движка версии 1.9.48 это работает над облаком:

[web.xml]

<web-app>

    ...    

    <error-page>
        <error-code>404</error-code>
        <location>/static-error.html</location>
    </error-page>
</web-app>