Ich verwende Jersey 2.5.1 als jax-rs-Implementierung und verwende Moxy als JSON-Serialisierer. Ich habe Jersey so konfiguriert, dass Validierungsfehler ausgegeben werden, die in web.xml ausgegeben werden.Validierungsausnahme-Mapper gibt kein JSON-Format zurück
Das funktioniert gut, da Validierungsfehler im Nur-Text (Text/plain) zurückgegeben werden. Das Problem ist, dass ich Validierungsfehlermeldungen im JSON-Format und gemäß Jersey documentation erhalten möchte, um dies zu tun, muss ein JSON-Provider dafür konfiguriert werden. Soweit ich weiß, ist Moxy als JSON-Provider konfiguriert, wenn seine Abhängigkeiten an Classpath gebunden sind. Leider werden meine Validierungsfehler nicht im JSON-Format (application/json) zurückgegeben. Was kann falsch sein? Muss ich zusätzliche Bits konfigurieren?
Ps.s. wenn ich ValidationExceptionMapper Debug-Code folgende gibt Variant-Objekt mit Text Medientyp/plain
if (property != null && Boolean.valueOf(property.toString())) {
final List<Variant> variants = Variant.mediaTypes(
MediaType.TEXT_PLAIN_TYPE,
MediaType.TEXT_HTML_TYPE,
MediaType.APPLICATION_XML_TYPE,
MediaType.APPLICATION_JSON_TYPE).build();
final Variant variant = request.get().selectVariant(variants);
if (variant != null) {
response.type(variant.getMediaType());
} else {
// default media type which will be used only when none media type from {@value variants} is in accept
// header of original request.
// could be settable by configuration property.
response.type(MediaType.TEXT_PLAIN_TYPE);
}
response.entity(
new GenericEntity<List<ValidationError>>(
ValidationHelper.constraintViolationToValidationErrors(cve),
new GenericType<List<ValidationError>>() {}.getType()
)
);
}
Was ist der Inhaltstyp Ihrer Antwort (Text/plain oder etwas anderes)? Können Sie uns Ihre Ressourcemethode zeigen, die Sie aufrufen, und was senden Sie in Accept Header von Client zu Server? –
Ich fing an, nach Informationen zu suchen, die Sie verlangten, und ich bemerkte, dass ein Plugin, das ich zum Testen verwendete, keinen Header hinzufügte: Accept: application/json. Nach dem Hinzufügen bekomme ich eine Antwort im JSON-Format. – Bart