7

Spring 3 MVC アプリでレンダリングするオブジェクトのリストを取得しようとしていますが、これを Ajax 経由で行いたいと考えています。

したがって、私の春のクラスには次のものがあります。

@RequestMapping(value = "/viewSearchEnquiriesAjax", method = RequestMethod.GET, headers = "Accept=application/json")
public @ResponseBody List<Enquiry> getEnquiriesBySearchAjax(@RequestParam String name) {
    Search search =  new Search();
    search.setFirstName(name);
    return searchEnquiries(search);
}

しかし、これを実行すると 500 (Internal Server Error) が発生します。これは、ブラウザでデバッグしているときに現れます'GET http://localhost:8080/SpringMVC/viewSearchEnquiriesAjax?name=peter 500 (Internal Server Error)'

エラーなしで単一のオブジェクトを正常に返すことができます。Spring Json マッパー (Jackson) は正しく変換できますか? 基本的な何かが欠けていますか?

私のjavascriptは次のとおりです。

function doAjaxPost() {
// get the form values
var firstName = $('#firstName').val();
$.getJSON("/SpringMVC/viewSearchEnquiriesAjax", { name: firstName }, function(result) {
    alert("Success");
 });

}

私の照会オブジェクトはエンティティです:

@Entity
@Table(name = "enquiries")
public class Enquiry implements java.io.Serializable{

    private static final long serialVersionUID = -5093725544297637792L;

    protected Long id;
    protected Date created = new Date();
    ...
    ...

    public Enquiry() {
    }

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id", unique = true, nullable = false)
    public Long getId() {
        return this.id;
    }

    public void setId(Long id) {
        this.id = id;
    }
   ...
   ...
4

1 に答える 1

9

Jackson の場合、型消去のために強く型付けされたリスト クラスを作成する必要があります。

public class EnquiryList extends ArrayList<Enquiry> {
}

次に、コントローラーからこのリストを返します。

@RequestMapping(value = "/viewSearchEnquiriesAjax", method = RequestMethod.GET, headers = "Accept=application/json")
public @ResponseBody EnquiryList getEnquiriesBySearchAjax(@RequestParam String name) {
    EnquiryList list = new EnquiryList();
    ...
    return list;
}

また、同様の質問に対するこの回答も確認してください。

于 2012-10-07T20:19:27.753 に答える