例外,我有以下方法,它幕後使用傑克遜的實體名單解析爲JSON:Spring MVC的:使用時@ResponseBody和實體循環引用
這種方法是從視圖中調用通過Ajax使用jquery
var idBranch = '${store.id}';
$.get("http://localhost:8080/myapp/user/stores/" + idBranch+ "/branches",
function(data) {
// show json objects in page
});
的問題是,當該方法結束時,它引發以下例外:
java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:639)
我試圖刪除@PathVariable(返回一些默認值),它工作正常,但我需要該參數。這個問題有沒有解決方法?
編輯:這裏的分支代碼的要求,但同樣:我不認爲,因爲如果@PathVariable它工作的很好,我不使用它的相關問題,分行的名單解析確定以JSON和發送到視圖。另外,我使用了對Hibernate傑克遜插件,告訴傑克遜不要解析懶加載的屬性,以防止exceptiosn
@Entity
@Table(name = "BRANCH")
public class Branch implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="BRANCH_ID")
@GeneratedValue(strategy= GenerationType.TABLE)
private Integer id;
@Column(name = "DESCRIPTION")
@Size(max = 500)
private String description;
@Column(name="STREET")
@NotNull
@Size(max = 100)
private String street;
@Column(name="NUMBER")
@NotNull
@Size(max = 6)
private String number
@Column(name="FLOOR")
@Size(max = 3)
private String floor;
@Column(name="APT")
@Size(max = 10)
private String apt
@OneToMany(cascade = CascadeType.ALL, mappedBy="branch")
private List<BranchPhoto> photos;
@JoinColumn(name = "STORE_FK", referencedColumnName = "STORE_ID")
@ManyToOne(optional = false)
private Store store;
public Branch() {}
// getters & setters
}
編輯:我意識到,即使沒有PathVariable它thorws同樣的例外,我必須測試那個錯誤。所以這個問題其實是解析json時的循環引用問題
可以顯示代碼的其餘部分,響應正文和pathvariable work fine together – NimChimpsky
您是否明知地在** your ** code的某個地方寫了迴應?這可能是罪魁禍首,因爲春季也將試圖寫出迴應。 –
Hi @NimChimpsky我添加了一些代碼,我認爲所有相關的代碼都在那裏。唯一缺少的就是調用dao從db中檢索實體。 – Damian