2017-02-28 54 views
0

如果我在Spring的POJO和控制器上使用@JsonView,我的HATEOAS链接将被隐藏。我可以理解为什么发生这种情况,因为_links属性没有用正确的视图类注释,但这不是我需要的行为。有没有办法总是包含_links属性,不管是否使用视图类?在Spring中使用@JsonView Hateoas

我的POJO看起来像:

@Entity(name = "groups") 
@SequenceGenerator(name = "groups_groupid_seq", sequenceName = "groups_groupid_seq") 
public class Group extends ResourceSupport { 
    @Id 
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "groups_groupid_seq") 
    @JsonView(Views.Summary.class) 
    private long groupID; 

    @JsonView(Views.Full.class) 
    private String name; 

    /* 
     Getters & setters ... 
    */ 
} 

我的控制器看起来像:

@RestController 
@RequestMapping(path = "/group") 
@ExposesResourceFor(Group.class) 
public class GroupApiController { 
    @JsonView(Views.Summary.class) 
    @RequestMapping(path = "/", method = RequestMethod.GET) 
    public Iterable getPermittedGroups(
      Authentication authentication) { 
     // load groups... 
    } 
} 

我HATEOAS配置:

@Configuration 
@EnableAspectJAutoProxy 
@EnableEntityLinks 
@EnableHypermediaSupport(type = EnableHypermediaSupport.HypermediaType.HAL) 
public class HateoasConfig { 
    // 
} 

使用@JsonView我没有,所以我很乐意使用替代方案。但我确实需要能够从不同的控制器方法返回同一个类的不同视图,否则我可以使用@JsonIgnore

回答

0

有没有办法总是包含_links属性,无论 使用视图类还是不是?

使用Spring引导
设置弹簧杰克逊映射配置 spring.jackson.mapper.default-view-inclusion=true 在您application.properties

使用Spring @Configuration类
这个主题很好地覆盖在"Configuring Object Mapper in Spring"

但是,目前HATEOAS特别存在的问题阻止了它的运行。特别是公开票"Support for HATEOAS-Links in Json-Views"

相关问题