我和春天4.0.5.RELEASE,Spring MVC的工作只通過Java的配置春4.0.x的JSON/Ajax的HTTP/1.1 406無法接受
我在我的pom.xml如下:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
Where <jackson.version>1.9.13</jackson.version>
我正在使用有關JSON的Spring默認配置。在一些@Controller
我有以下幾點:
@RequestMapping(value="/getjsonperson",
method=RequestMethod.GET,
produces=MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Person getJSONPerson(){
logger.info("getJSONPerson - getjsonperson");
return PersonFactory.createPerson();
}
@RequestMapping(value="/getperson.json", method=RequestMethod.GET)
public @ResponseBody Person getPersonJSON(){
logger.info("getPerson - getpersonJSON");
return PersonFactory.createPerson();
}
和工程罰款。我可以在瀏覽器中看到返回的JSON值。直到這裏一切正常。
現在我想結合的Spring MVC +(JSON AJAX)
我有這個教程中如何引用Spring MVC: Ajax & JQuery
好吧,我有以下約JSON與AJAX(通過選擇或組合框的工作負載第二組或集合)
注:URL是靜態的,即使我只使用/spring-utility/facturaajax/findallproductobycategoria.htm
問題仍然存在
$("#categoria").change(function(event){
var json = {"id" : $(this).find("option:selected").val(), "nombre" : $(this).find("option:selected").text() };
$.ajax({
url: "http://localhost:8080/spring-utility/facturaajax/findallproductobycategoria.htm" ,
data: JSON.stringify(json),
type: "POST",
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
success: function(products) {
alert("all fine!!!!");
}
});
//event.preventDefault();
});
關於控制器我有以下處理Ajax過程
@RequestMapping(value="/findallproductobycategoria.htm",
method=RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody Set<Producto> findAllProductoByCategoria(@RequestBody Categoria categoria){
logger.info("findAllProductoByCategoria: {}", categoria.toString());
return this.fakeMultipleRepository.findAllProductoByCategoria(categoria.getId());
}
即使我用headers="Accept=application/json"
或headers="Content-Type=application/json"
問題仍然存在。
的POJO是serializables
public class Categoria implements Serializable {
private static final long serialVersionUID = 5655804710111228325L;
public class Producto implements Serializable {
private static final long serialVersionUID = -6362590479124787529L;
問題:當我改變選擇HTML元素的值,我始終接收HTTP/1.1 406不可接受(見兩個連接的圖像)
順便說一句:服務器端永遠不會被調用。
我已經閱讀過SO上的其他文章。幾乎所有人都會提及傑克遜,並且基於Spring 3.2.x。
即使我添加以下,問題仍然存在
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>${jackson.version}</version>
</dependency>
缺少什麼?謝謝。