У меня проблема с некоторыми проверками, которые я выполняю в своем проекте.Я пытаюсь проверить некоторые аргументы внутри объекта, который я создал в моем контроллере, в первую очередь получая строку.
@RequestMapping(value = "/publicar", method = { RequestMethod.GET, RequestMethod.POST }, produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public ApiPubPortalPublicarOut publicar(@RequestParam(value = PARAM_XML) String xml, Locale locale) {
//This object is my return, it creates an XML with the validation.
ApiPubPortalPublicarOut xmlTaxOut = new ApiPubPortalPublicarOut();
Errors result = null; //Here is the problem
//validate incoming xml is empty
if ((xml == null) || (xml.length() == 0)) {
xmlTaxOut.setDescription("xml is Empty!");
return xmlTaxOut;
}else{
try{
//I transform the xml into an object
JAXBContext jc = JAXBContext.newInstance(ApiPubPortalPublicarPortal.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();
StreamSource streamSource = new StreamSource(new StringReader(xmlEntrada));
JAXBElement<ApiPubPortalPublicarPortal> je = unmarshaller.unmarshal(streamSource, ApiPubPortalPublicarPortal.class);
//Here is the validation method.
parsingPublicacion(je.getValue(), result, locale);
if(result.hasErrors()){
xmlTaxOut.setDescription(result.getAllErrors().toString());
return xmlTaxOut;
}
}catch(Exception){
xmlTaxOut.setDescription("Error parsing!");
return xmlTaxOut;
}
}
}
Это мой контроллер, как вы можете видеть, я пытаюсь преобразовать свою строку в объект, затем я вызываю метод parsingPublicacion
, чтобы выполнить мои проверки.
Основная проблема в том, что я не могу инициализировать свой параметр Errors
, потому что это интерфейс, кто-нибудь знает, как я могу управлять этой проверкой?
Это метод проверки вали.
private void parsingPublicacion(ApiPubPortalPublicarPortal portalPublicado, Errors e, Locale locale) {
ApiPubPortalPublicarPortal pubPortal = portalPublicado;
ValidationUtils.rejectIfEmptyOrWhitespace(e, "name", "name.empty"));
if (pubPortal.getNombre().length() > 50){
e.rejectValue("name", "name.oversize");
}
ValidationUtils.rejectIfEmptyOrWhitespace(e, "idLanguage.empty");
if ((pubPortal.getIdPortal() == 0)){
e.rejectValue("idLanguage", "idLanguage.zero"));
}
}
Я не могу вызвать ошибки из метода, потому что я разрешил вызывать только определенные параметры в контроллере.