Witam, mam problem z obsługą jednego żądania AJAX w Springu. Chodzi o to, że chcę przekazać pojedynczy string jako argument do metody, lecz kiedy próbuję to zrobić to ten string jest nullem. Gdy @RequestBody mam jako klasę to metoda nie jest wywoływana i żądanie AJAX kończy się bad requestem (400)
Tak wygląda metoda bez @RequestBody, gdzie dostaję null, jednak w konsoli javascriptowej widzę, że string, który próbuję przekazać nim nie jest
@RequestMapping(value="/meals/new", method=RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Item> autocomplete(String autocomplete) {
System.out.println(autocomplete);
return null;
}
Ta sama metoda z użyciem @RequestBody, kończy się 400:
@RequestMapping(value="/meals/new", method=RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<Item> autocomplete(@RequestBody Autocomplete autocomplete) {
System.out.println(autocomplete.getValue());
return null;
}
Model klasy autocomplete:
@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"value"
})
public class Autocomplete {
@JsonProperty("value")
private String value;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
/**
*
* @return
* The value
*/
@JsonProperty("value")
public String getValue() {
return value;
}
/**
*
* @param value
* The value
*/
@JsonProperty("value")
public void setValue(String value) {
this.value = value;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
Żądanie AJAX:
$.ajax({
url: $("#newMealForm").attr("action"),
data: JSON.stringify({
"value": apn
}),
type: "GET",
beforeSend: function (xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader
},
success: function (item) {
console.log(item.length);
availablePTags = item;
}
});