当我的服务器收到不完整的xml时,由于500 Internal Server Error
的默认处理,它会返回java.lang.IllegalArgumentException
。我可以覆盖返回的html页面,但我还需要覆盖错误代码并使其400
遵循我们记录的规范。有没有办法覆盖JSF-2.0
中的错误代码?我们正在使用JAXB
进行xml
处理。
答案 0 :(得分:1)
我最终使用了像这样的ExceptionMapper:
@Provider
public class ClassCastExceptionMapper implements ExceptionMapper<java.lang.ClassCastException> {
@Override
public Response toResponse(java.lang.ClassCastException arg0) {
return Response.status(Response.Status.BAD_REQUEST).build();
}
}
答案 1 :(得分:0)
取决于它被抛出的位置以及它是否包含在另一个例外中。根据目前提供的信息,很难给出一个完美的答案。
但是到目前为止,要使用JSF2发送具有正确状态的响应错误,请使用ExternalContext#responseSendError()
。 E.g。
try {
// ... ???
} catch (IllegalArgumentException e) {
externalContext.responseSendError(400, e.getMessage());
e.printStackTrace(); // Or use logger.
}
或等同于servlet filter,请使用HttpServletResponse#sendError()
try {
// ... ???
} catch (IllegalArgumentException e) {
response.sendError(400, e.getMessage());
e.printStackTrace(); // Or use logger.
}