У меня нет проблем, чтобы отправить список объектов в ответ на запрос POST и получить его в клиенте VueJs
@RequestMapping(value={"/data/parts"}, method = RequestMethod.POST)
@ResponseBody public List<Part> getPartsList( @RequestBody LookupForm lookupForm ) {
return getService().findParts(lookupForm.getCode(), lookupForm.getName(), lookupForm.getWarehouseCode());
}
Но когда я пытаюсь ответить с помощью пользовательского класса Response (я даже добавил produces="application/json"
в аннотации RequestMapping)
@RequestMapping(value={"/addPartsRequest"}, method = {RequestMethod.POST}, produces="application/json")
@ResponseBody public Response addPartsRequest(@RequestBody PartsRequest partsRequest) {
Response response = new Response("Fail","Your Request failed");
PartsRequest newRequest = getService().addPartsRequest(partsRequest);
if (newRequest != null){
response = new Response("Ok", "The Ticket has been submitted.");
}
return response;
}
class Response {
String message;
String status;
public Response() {
// empty c-tor for serialization
}
public Response(String status, String message) {
this.message = message;
this.status = status;
}
// ... getters & setters omitted
}
На стороне VueJ запрос отправлен с помощью axios.post
var headers = {
'Content-Type': 'application/json'
}
axios.post(`${API_URL.orderApi}`, formData, {headers})
.then(response => {
const commitPayload = response.data.message;
const status = response.data.status;
if(status === 'Ok'){
this.$store.commit('setMessage', commitPayload)
}else{
this.$store.commit('setErrMessage', commitPayload)
}
this.$router.push('/parts')
},
error => {
this.$store.commit('setErrMessage', 'Submit Order failed')
this.$router.push('/parts')
})
Vue UI клиент получает
Status Code: 406 Not Acceptable
Content-Type: text/html;charset=UTF-8
<html><head><title>Error</title></head><body>Not Acceptable</body></html>
Почему я могу ответить списком объектов и не могу ответить POJO и как исправить проблему?
Спасибо.
PS. Проект зависит от jackson-databind v2.8.2 и пружины v4.3.1