2017-10-06 159 views
0
打印

我只想打印约束消息,但像如何从BeanValidationException

bean代码部分

@NotNull(message="Validation Error name value Missing.") 
private String name; 

路由器代码

onException(BeanValidationException.class) 
    .handled(true) 
    .process(new FailedResponseProcessor()); 

处理器代码

apachecamel打印结束消息仅限制消息
public void process(Exchange exchange) throws Exception { 
    Exception e = exchange.getProperty(Exchange.EXCEPTION_CAUGHT, Exception.class); 
    Response response = new Response(); 
    response.setRequestStatus("Failed"); 
    response.setRequestMessage(e.getMessage()); 

以下是响应收到

<response> 
    <requestStatus>Failed</requestStatus> 
    <requestMessage>Validation failed for: [email protected] errors: [property: name; value: null; constraint: Validation Error name value Missing.; ]. Exchange[ID-WCB00073679-49595-1507251546181-0-1]</requestMessage> 
</response> 
+0

是不是有被抛出某种BeanValidationException的有API来获取约束信息和其他细节。在处理器代码中,您只需使用通用的Exception类,尝试找出它的真正类型并查看它具有的API –

回答

0

下面为我工作

BeanValidationException bve = (BeanValidationException) exchange.getProperty(Exchange.EXCEPTION_CAUGHT); 
Set<ConstraintViolation<Object>> constraintViolations = bve.getConstraintViolations(); 
ConstraintViolation<Object> constraintViolation = constraintViolations.iterator().next(); 
System.out.println(constraintViolation.getMessage());