spring - 服务器在 Spring ResponseEntity 中返回 HttpSession 对象时出现 StackOverflow 错误
问题描述
在我的 Spring MVC Rest 控制器方法中,我试图将HttpSession
另一个名为 的自定义对象中的对象返回给客户端Token
,所有这些对象都在 Spring对象中。ResponseEntity
但是由于某种原因,每当我将对象作为属性包含在我的类中时Stackoverflow
,由于一些无限递归的数据绑定问题,我得到了一个错误。 Jackson
HttpSession
Token
当对象不在我的班级中时,我没有收到StackOverflow
错误消息。HttpSession
Token
这是我的Token
课:
public class Token implements Serializable {
private static final long serialVersionUID = 1L;
private HttpSession session;
private String value;
public Token () {}
public Token (HttpSession session, String value) {
this.session = session;
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public HttpSession getSession() {
return session;
}
public void setSession(HttpSession session) {
this.session = session;
}
}
这是我的控制器方法:
@RequestMapping(value = "/getData", method = RequestMethod.GET)
public ResponseEntity<Token> getData(HttpServletRequest request) {
HttpSession session = request.getSession();
Token t = new Token(session, "value");
return new ResponseEntity<Token>(t, HttpStatus.OK);
}
有谁知道为什么会这样?
这是堆栈跟踪:
Root cause of ServletException. org.springframework.http.converter.HttpMessageNotWritableException: Could not write JSON: Infinite recursion (StackOverflowError); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: weblogic.servlet.internal.WebAppServletContext["securityContext"]->weblogic.servlet.internal.ServletSecurityContextImpl["servletContext"]............... com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at ........-
解决方案
推荐阅读
- curl - 将 curl -d "user[email]" 数据翻译成邮递员
- android - 导航抽屉中的 TabLayout 与工具栏重叠
- android - 无法在空对象上调用方法 containsKey()
- angular - 更新失败:TypeError:无法读取未定义的属性“注入器”
- javascript - 如何修复 angular.min.js:108 TypeError: Cannot read property 'length' of undefined error is shown Angular js pagination
- bash - 在bash中捕获一个psql(PostgreSQL)命令错误,可以通用,与sql无关
- php - 在foreach中使用递归函数替换PHP数组值
- python - Python:从字符串中删除选定的空格
- vuejs2 - vue-i18n - 检测“未知”类型的令牌
- reactjs - 如何设置 aws-sdk 以从 s3 存储桶中的公共文件中获取文件内容?