Как поймать FacesFileNotFoundException
Несмотря на то, что я сделал то, что написано на этой странице, я все еще не смог решить эту проблему. проблема в том, что изменения в файле web.xml не влияют на работу приложения. Кстати, я использую ExceptionHandler (с использованием org.jboss.solder.exception.control.HandlesExceptions.HandlesExceptions аннотации). Я попытался добавить метод в свой класс ExceptionHandler, но не смог импортировать FacesFileNotFoundException. Итак, вот мой вопрос, хотя приложение выдает исключение FacesFileNotFoundException, почему я не могу импортировать класс исключений FacesFileNotFoundException на странице?
2 ответа
Вы должны правильно добавить страницу ошибки в web.xml, вы должны поместить полное исключение и целевое местоположение, куда вы перенаправляете, когда выбрасывается исключение, - это html, а не xhtml, это очень важно, это должно быть что-то как это
<error-page>
<exception-type>com.sun.faces.context.FacesFileNotFoundException</exception-type>
<location>/pagenotfound.html</location>
</error-page>
Чего я не знаю, так это как сделать исключение, не отображаемое на консоли, но оно работает нормально
Я попытался добавить метод в свой класс ExceptionHandler, но не смог импортировать FacesFileNotFoundException. Итак, вот мой вопрос, хотя приложение выдает исключение FacesFileNotFoundException, почему я не могу импортировать класс исключений FacesFileNotFoundException на странице?
com.sun.*
Пакет специфичен для реализации JSF Mojarra. Очевидно, у вас есть JAR-файл JSF API в classpath времени компиляции, но нет JAR-файла реализации JSF.
Это не должно быть большой проблемой. Вы должны стараться не делать свое веб-приложение зависимым от конкретной реализации JSF. Вы должны попытаться избежать импорта / ссылки на классы, специфичные для реализации. FacesFileNotFoundException
простирается от java.io.FileNotFoundException
, поэтому я рекомендую импортировать это вместо. Не забудьте развернуть FacesException
, Некоторые подсказки см. Также в исходном коде OmniFaces. FullAjaxExceptionHandler
а также FacesExceptionFilter
,
Если вам абсолютно необходимо импортировать специфическую для Мохарры FacesFileNotFoundException
и вы хотите, чтобы ваш код компилировался, затем вы должны добавить JAR-файл JSF-реализации в classpath времени компиляции. Как именно это сделать, зависит от используемой IDE. В Eclipse вы должны ссылаться на файл JAR реализации JSF из сервера приложений в пути сборки.
Обратите внимание, что JSF ExceptionHandler
по умолчанию ничего не делает с объявлениями об ошибках в web.xml
,