2011-07-18 10 views
1

コントローラからオブジェクトを取得しようとしていて、JSPに表示しようとしています。私のコントローラのデバッグでは、正しいデータが返されます。しかし、私は私のjavascriptをデバッグするためにfirebugを使うと、そのフローはgetJsonの関数(データ)に入りません。Jquery getJSON()がコントローラから出力を取得しない

$.getJSON('/em',{name: name, cv: cv}, 
    function(data){ 
     alert("Hello"); 
     alert(data.name); 
}); 

コントローラ -

私はaddedEmが正しく返さ取得
@RequestMapping(value = "/em", method = RequestMethod.GET) 
public Employee addEmployee(@RequestParam(value = "name", required = true) String name, @RequestParam(value = "cv", required = true) String cv,Model model) { 
    return addedEm; 
} 

。何がここで間違っているのか分からない。誰かが私にこれを手伝ってもらえますか?ありがとう。また

、私は私のコントローラに@ResponseBodyを追加するとき、私は放火犯で応答を得る:

Apache Tomcat/7.0.12 - Error report - <h1>HTTP Status 500 - </h1><p><b>type</b> Exception report</p><u>The server encountered an internal error() that prevented it from fulfilling this request.</u><b>exception</b> <pre>org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: org.hibernate.collection.PersistentBag[0]-&gt; nz.co.datacom.panelrequests.pd.user.Employee[&quot;user&quot;]-&gt; nz.co.datacom.panelrequests.pd.user.User[&quot;roles&quot;]-&gt; org.hibernate.collection.PersistentBag[0]-&gt; nz.co.datacom.panelrequests.pd.user.Panelist[&quot;employees&quot;]-&gt;* 

、その後:

org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:189) 
org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:142) 
      org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:442) 
     org.codehaus.jackson.map.ser.ContainerSerializers$CollectionSerializer.serializeContents(ContainerSerializers.java:383) 
     org.codehaus.jackson.map.ser.ContainerSerializers$AsArraySerializer.serialize(ContainerSerializers.java:142) 

し、それは放火犯の上限まで繰り返します。

+0

問題は何ですか?私は本当にこれのための解決策を見つけることができませんでした。 :( – sara

答えて

4

これは、エンティティが相互参照を持つために発生しています。無限再帰を作成している。ジャクソンが行くと、それは1つを読んでから、もう一方に戻り、それからその1つに戻ります。あなたの雇用者は従業員への参照を持ち、あなたの従業員は雇用者への参照を持っています。 OneToManyおよびManyToOne

ここに修正があるブログエントリがあります。サイドノートでは http://vard-lokkur.blogspot.com/2010/10/json-jackson-to-rescue.html

http://wiki.fasterxml.com/JacksonFeatureBiDirReferences

、あなたも、あなたがそれらを含めたくない場合は、エンティティの特定のフィールドを無視するように注釈@JsonIgnoreを使用することができます。

関連する問題