私はJSONの結果の書き込み私のSpringMVC RestController
に問題がある作品:私は以下のようにドメインオブジェクトを返すときRestControllerから返されたドメインオブジェクトはAJAXエラーを引き起こします。カスタムモデルオブジェクトが
1)、ActivitiesT、私はクライアント - にAJAX 500内部サーバーエラーを取得します側。
@RequestMapping("/participant/activityForEvent")
public ActivitiesT getActivityForGuiEventId() throws Exception {
ActivitiesT activitiesT = participantService.getActivity();
return activitiesT;
}
ActivitiesTドメインオブジェクト、Hiberate-生成:
@Entity
@Table(name = "activities_t", schema = "public")
public class ActivitiesT implements java.io.Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int id;
//... etc...
}
2)しかし、私はカスタムPOJOを返すとき、AJAXメソッドが動作します。それはほぼ同じです。
@RequestMapping("/participant/activityForEvent")
public ActivitiesT getActivityForGuiEventId() throws Exception {
ActivitiesT activitiesT = participantService.getActivity();
// Create a custom Activity POJO and return it
return new Activity(activitiesT.id, activitiesT.title);
}
活動カスタムPOJO:
public class Activity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
public int id;
public String title;
//etc.
エラーメッセージ
HTTP Status 500 - Could not write JSON: could not initialize proxy - no Session; nested exception is com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy -
(参照チェーンを通して:com.myapp ")なしセッション
には、いくつかの注意事項:
- 両方のオブジェクトが
Serializable
を実装し、それが - いいのよ問題はDAOはありませんが、私はDAOは常に両方のために正しいデータを返し、私たちはコントローラーが
@RestController
でアノテートされたDAOピース - を無視することができます見ることができ、それので、常にJSONを出力します。私はResponseBodyや古いタグは必要ありません
問題がどこにあるのでしょうか?問題は、これに沸く:
- 私は@Entity Hibernateは、生成されたPOJOを上RestControllerメソッドからJSONを返すことはできませんしかし、私は私自身のカスタムのPOJOにRestControllerメソッドからJSONを返すことができ
投げられた例外( '500 Internal Server Error')を教えてください。 – lzagkaretos
サーバー側で例外がスローされない場合、コントローラーはOKを完了します。クライアントサイドでAJAX JSにアクセスするとFirebugで500の内部サーバーエラーしか表示されません。 –
500内部サーバーエラーは、何かがサーバー側で起こっていることを示します。私はこの種の問題を見てきました。大きなオブジェクトのシリアライズでは、「ActivitiesT」はControllerが値を返した後に何らかのExceptionがスローされた単純なオブジェクトまたは複雑なオブジェクト(ちょうど推測)です。 – lzagkaretos