2

別のクラスPersonを含む次のクラスがありますCar

public class Person {
    private String name
    private Car car;        
    ... getter and setters
}

public class Car {
    private String manufacturer;
    ... getter and setters
}

Javascriptでは、次のことを行います。

person = new Object();
person.name = "Bob";

person.car = new Object();

car = person.car;

car.manufacturer = "Mercedes";

$.ajax({
    url: 'someurl.com',
    type: 'POST',
    data: person,
    dataType: 'json',
    ...
    complete: function() {
        ...
    }
});

自動バインド機能を使用すると、次のエラーが発生します。

関数:

public @ResponseBody Car validateCar( Car car, HttpServletRequest servletRequest){
        ...
}

エラー:

org.springframework.beans.InvalidPropertyException: Invalid property 'car[manufacturer]' of bean class [com.example.Person]: Property referenced in indexed property path 'car[manufacturer]' is neither an array nor a List nor a Map; returned value was []

マッピングを機能させるにはどうすればよいですか?

ところで:私のPOSTデータは次のようになります:

name: Bob
car[manufacturer]: Mercedes

JSONとして文字列化すると、次のようになります(テストしましたが、文字列化していません)

{"name":"Bob",
 "car": {
  "manufacturer":"Mercedes"
 }
}
4

2 に答える 2

0

Car ハッシュを渡して、それを Person オブジェクトに自動バインドしようとしているようです。これが機能するには、ハッシュが person[car[manufacture]]] のようになっている必要があります。javascript で person オブジェクトを渡してから、自動バインドされた person オブジェクトから car オブジェクトを引き出してみてください。

于 2012-08-20T15:26:05.863 に答える
0

あなたの車に @RequestBody が欠けていると思います:

public @ResponseBody Car validateCar( @RequestBody Car car, HttpServletRequest servletRequest)
于 2012-08-20T15:34:09.120 に答える