tengo una clase DTO con un campo como:JAXB: cómo hacer JAXB NO a deserializar cadena vacía a 0
@XmlAttribute
@NotNull
private Integer number = null;
Estoy intentando xml unmarshal como
... number="" ...
Necesito que el campo nuber permanezca nulo, para que se genere una excepción de validación. En su lugar, JAXB lo desasigna como 0 ¿Cómo puedo hacer que se comporte correctamente?
No estoy completamente de acuerdo con que esto sea un comportamiento correcto. No hay conversión implícita entre cadena vacía y un int (por ejemplo, Integer.parseInt ("") arroja NumberFormatException en este caso). Y no es que quiera un nulo: estoy desmarcando la entrada del cliente, y los códigos de error que se devuelven deben ser los mismos en el caso de que el atributo numérico se haya omitido o no tenga ningún valor. –
@RA: Puede estar en desacuerdo, es justo, pero estoy totalmente en desacuerdo con que una cadena vacía "no tenga valor". It * is * a value, es una String vacía, y no es lo mismo que 'null'. Pero independientemente de lo que cualquiera de nosotros piense que es "correcto", lo único que importa es lo que piensa JAXB. – skaffman
cadena vacía no es un "valor nulo", es solo un "valor no convertible a int" :) –