2012-01-15 2 views
1

В моей странице web.xml я имею ошибку 404, отображенный на странице JSP, как:Tomcat 404 страницы С помощью Spring формы

<error-page> 
    <error-code>404</error-code> 
    <location>/WEB-INF/jsp/errorPages/error404.jsp</location> 
</error-page> 

Перенаправление на 404 работает отлично. Я получаю error404.jsp. Проблема в том, что у меня есть весенняя форма на странице (форма поиска, которая находится на КАЖДОЙ странице), которая вызывает ошибки, поскольку целевой объект не находится в модели. Я получаю следующее исключение:

вызвано следующими причинами: java.lang.IllegalStateException: Ни BindingResult, ни равнину целевой объект для имени боб «searchCriteria» доступны как атрибут запроса

Я хотел бы иметь эту форму поиска на каждой странице, включая страницы ошибок. Есть какой-либо способ сделать это? Я понимаю, что 404, поскольку я сконфигурирован выше, не идет на сервлет ... так как я могу получить атрибут запроса в модели?

ответ

0

Способ сделать это, чтобы отобразить страницы ошибок в сервлет. Внутри сервлета вы можете добавить вещи в свою модель, как и в любом другом сервлете. Для отображения страниц ошибок в сервлет, добавить что-то вроде следующего в файл web.xml:

<error-page> 
    <error-code>404</error-code> 
    <location>/error/generalError</location> 
    </error-page> 

где «ошибка» это имя сервлета и «generalError» является отображением запроса.

1

Одним из решений является кодирование формы поиска в виде простого HTML в вашем JSP/шаблоне, так что вы удаляете любую зависимость от объекта привязки формы. Для простой формы поиска с помощью кнопки ввода текста и отправки это не должно быть проблемой.

+0

Это правда, но тогда я должен поддерживать форму дважды: одна форма формы на основе пружины и одна статическая форма. Я хотел бы избежать этого, если это возможно. – threejeez

+0

Я предполагал, что вы используете Sitemesh или Tiles, так что обычно есть только один экземпляр декоратора, который вам нужно поддерживать. Если нет, вы можете использовать JSP-файл тега или просто включить JSPF-файл, чтобы избежать сохранения двух экземпляров формы? Предполагается, что вы сохраните версию HTML ... вы все равно можете получить «липкие» значения, выполнив что-то вроде ''. – nickdos

+0

В любом случае, мне все равно нужно поддерживать 2 формы, которые идентичны. Зачем беспокоиться о весенней форме? Я мог бы просто использовать форму ванили, которая может быть использована на каждой странице. – threejeez

Смежные вопросы