Java jersey中的自定义ValidationError类仅发送字符串错误消息
jersey2.x的ValidationError类如下所示Java jersey中的自定义ValidationError类仅发送字符串错误消息,java,jersey,jax-rs,Java,Jersey,Jax Rs,jersey2.x的ValidationError类如下所示 @XmlRootElement public final class ValidationError { private String message; private String messageTemplate; private String path; private String invalidValue; ... } Contact with given ID does not exi
@XmlRootElement
public final class ValidationError {
private String message;
private String messageTemplate;
private String path;
private String invalidValue;
...
}
Contact with given ID does not exist. (path = ContactCardResource.getContact.<return value>, invalidValue = null)
当发生错误时,返回如下字符串
@XmlRootElement
public final class ValidationError {
private String message;
private String messageTemplate;
private String path;
private String invalidValue;
...
}
Contact with given ID does not exist. (path = ContactCardResource.getContact.<return value>, invalidValue = null)
具有给定ID的联系人不存在。(path=ContactCardResource.getContact.,invalidValue=null)
但我需要的是客户端的一致错误消息响应接口。它应该只发送字符串消息。所以这不应该包括类名和方法名。对于一些不依赖于bean验证的验证,例如重复用户名。我只发送带有400或500状态码的字符串。我想对Bean验证做同样的事情,如何实现这一点Bean验证抛出
ConstraintViolationException
,您可以编写一个自定义异常映射器来处理ConstraintViolationException
,如下所示
@Singleton
@Provider
public class ConstraintViolationMapper implements ExceptionMapper<ConstraintViolationException> {
@Override
public Response toResponse(ConstraintViolationException e) {
// There can be multiple constraint Violations
Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
List<String> messages = new ArrayList<>();
for (ConstraintViolation<?> violation : violations) {
messages.add(violation.getMessage());
}
return Response.status(Status.BAD_REQUEST).entity(StringUtils.join(messages,";")).build();
}
}
@Singleton
@提供者
公共类ConstraintViolationMapper实现ExceptionMapper{
@凌驾
公众对响应的响应(约束性事件例外){
//可能存在多个约束冲突
设置Bean验证抛出ConstraintViolationException
,您可以编写一个自定义异常映射器来处理ConstraintViolationException
,如下所示
@Singleton
@Provider
public class ConstraintViolationMapper implements ExceptionMapper<ConstraintViolationException> {
@Override
public Response toResponse(ConstraintViolationException e) {
// There can be multiple constraint Violations
Set<ConstraintViolation<?>> violations = e.getConstraintViolations();
List<String> messages = new ArrayList<>();
for (ConstraintViolation<?> violation : violations) {
messages.add(violation.getMessage());
}
return Response.status(Status.BAD_REQUEST).entity(StringUtils.join(messages,";")).build();
}
}
@Singleton
@提供者
公共类ConstraintViolationMapper实现ExceptionMapper{
@凌驾
公众对响应的响应(约束性事件例外){
//可能存在多个约束冲突
设置