加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy – 从Spring Boot渲染GORM类

发布时间:2020-12-14 16:29:15 所属栏目:大数据 来源:网络整理
导读:我正在尝试编写一个简单的 Spring Boot控制器来渲染GORM实例并失败. 这是我的代码的缩短版本: @RestController@RequestMapping("/user")class UserController { @RequestMapping(value='/test',method=GET) User test() { return new User(username: 'my te
我正在尝试编写一个简单的 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属性,如附加.我不接受这个答案,因为对于大多数场景来说它不是一个可接受的解决方案,它基本上只是压制了异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读