groovy – 从Spring Boot渲染GORM类
我正在尝试编写一个简单的
Spring Boot控制器来渲染GORM实例并失败.
这是我的代码的缩短版本: @RestController @RequestMapping("/user") class UserController { @RequestMapping(value='/test',method=GET) User test() { return new User(username: 'my test username') } } 我收到以下错误消息: 无法编写JSON:没有找到类org.springframework.validation.DefaultMessageCodesResolver的序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:users.domain.User [“errors”] – > grails.validation.ValidationErrors [ “MessageCodesResolver的信息”]);嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:没有找到类org.springframework.validation.DefaultMessageCodesResolver的序列化器,禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))(通过引用链:用户. domain.User [ “错误”] – > grails.validation.ValidationErrors [ “MessageCodesResolver的信息”]) 该错误似乎是由GORM注入的额外属性引起的.建议的解决方案是什么?这最终会在gorm-hibernate4-spring-boot中解决吗?我应该简单地禁用SerializationFeature.FAIL_ON_EMPTY_BEANS(我对Jackson没有很多经验,所以我不完全确定它可能有什么副作用)?我应该使用杰克逊的注释来解决问题吗?还有其他选择吗? 解决方法
我找到了一种方法来使用此代码摆脱错误:
@Component class ObjectMapperConfiguration implements InitializingBean { @Autowired ObjectMapper objectMapper @Override void afterPropertiesSet() { def validationErrorsModule = new SimpleModule() validationErrorsModule.addSerializer(ValidationErrors,new ErrorsSerializer()) objectMapper.registerModule(validationErrorsModule) } } class ErrorsSerializer extends JsonSerializer<ValidationErrors> { @Override void serialize(ValidationErrors errors,JsonGenerator jgen,SerializerProvider provider) { jgen.writeStartObject() jgen.writeEndObject() } } 显然这个解决方案远非完美,因为它只是简单地解决了所有验证错误,但现在它对我来说已经足够了.我很确定Spring Boot团队最终必须解决这个问题,因为GORM对象也被序列化了一些内部Hibernate属性,如附加.我不接受这个答案,因为对于大多数场景来说它不是一个可接受的解决方案,它基本上只是压制了异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |