我的JSP页面里面有一些EL。不幸的是,EL表达式抛出了异常。 因此,当系统记录异常并发送我的电子邮件时,用户会看到页面的一半。
是否可以将容器(tomcat)配置为首先处理jsp页面,然后将其显示给用户并在出现异常时显示500错误页面?
错误页面比部分呈现页面要好得多。
是的,我知道模板引擎应该处理viewmodel,除了访问器/ mutator之外什么也不应该抛出,但是现在我必须访问EL中的一些业务(域模型)对象。
答案 0 :(得分:1)
EL表达式评估不应该抛出异常。
如果发生这种情况,那么这只会意味着您的预处理代码中存在错误或者您的getter方法的设计方式。
预处理代码(读取:前端控制器servlet)必须绝对确保页面需要访问/存在的任何数据都已在范围内。 EL表达式引用的getter方法除了返回已经准备好的/已加载的属性外,不能做任何其他事情。
答案 1 :(得分:0)
您可以使用JSTL
<c:catch>
标签。一个例子:
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:catch var="exp">
${.}
</c:catch>
<c:if test="${exp != null}" >
Expection was thrown in EL
</c:if>
答案 2 :(得分:0)
您可以使用web.xml
为您的应用配置500错误页面。
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/error-pages/500.jsp</location>
</error-page>
将其放在web.xml文件的<web-app>...</web-app>
内。对于任何服务器端异常,它会将用户重定向到500.jsp
页面