我的首次使用J2EE 6应用。 我使用焊接ExceptionHandler来处理异常,但我并不喜欢它。对于我想做的事情来说,这似乎太复杂了。
例如
import java.io.IOException;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.jboss.solder.exception.control.CaughtException;
import org.jboss.solder.exception.control.Handles;
import org.jboss.solder.exception.control.HandlesExceptions;
/**
* Handle exceptions and redirect page.
*/
@HandlesExceptions
public class ExceptionHandlers {
void noResult(
@Handles CaughtException<dne.nmst.ond.exceptions.OfficeNotFoundException> caught,
HttpServletRequest request, HttpServletResponse response) {
caught.handled();
try {
String msg = caught.getException().getMessage();
response.sendRedirect(request.getContextPath()
+ "/searchOffice.xhtml");
} catch (IOException e) {
e.printStackTrace();
}
}
我想在searchOffice.xhtml中显示来自OfficeNotFoundException的错误消息。我如何从这里到达那里?
我考虑过的一件事是将错误放入flash上下文中,但在尝试从此异常处理类引用FacesContext时我得到了NPE。
我在web.xml中尝试了错误页面条目。我无法让它发挥作用。
我知道我可以将其作为重定向中的请求参数传递,但这似乎是一种解决方法。我想用最简单,最“正确”的方式(无论这意味着什么)。
我想念Seam 2,我们可以在pages.xml中执行此操作:
<exception class="dne.nmst.ond.exceptions.OfficeNotFoundException">
<redirect include-page-params="false" view-id="searchOffice.xhtml">
<message severity="warn"/>
</redirect>
与
<h:messages />
在视图中。
答案 0 :(得分:0)
您可以在代码中设置错误消息,并指定消息应出现在哪个h:messages标记中。请参阅下面的答案。