忽略Spring Boot中REST参数中的实体字段

时间:2016-10-19 15:05:57

标签: java spring spring-boot

我有一个在数据库中管理的实体和一个控制器,它在这个实体上提供一些CRUD操作。

实体中的某些字段不应由使用REST API的前端更改。我只是想忽略这个不可更改字段的值,而是使用DB中的值。

到目前为止,我在我的控制器方法中执行了此操作,在我对实体进行进一步处理之前调用了该方法。但这种方法对我来说很糟糕,所以我寻找其他解决方案。

如何将此预处理从Controller中移出来?

1 个答案:

答案 0 :(得分:1)

这是我能想到的解决方案:

您可以创建像MyObjVm这样的视图模型类,其中包含MyObj实体类的字段子集,这些字段可以更改。在您的控制器中,您可以使用MyObjVm对象,如下所示:

@RequestMapping(//...)
public String method(Model model, @RequestBody MyObjVm myObjVm) {
// ... 
// populate the MyObj entity from myObjVm so that only the changeable fields are consumed and assigned.
}  

以上显示了您如何从前端使用JSON。

如果您想做相反的操作,只需返回MyObjVm,其中的字段将由MyObj的可更改字段填充。您的前端需要有一个相应的JS对象来使用返回的JSON。

  

如何将此预处理从Controller中移出来?

因此,需要离开控制器的处理几乎就是视图模型和实体之间的转换。您可以创建一个专门用于执行此操作的帮助程序类方法。