有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

基于http方法SpringBoot的java显示字段

我有一个具有以下字段的POJO

@Getter @Setter
class Dates {
    String startDate;
    String endDate;
}

我的要求是仅在GET方法响应的情况下显示endDate字段,而不是POST方法。我知道我可以创建两个POJO来实现这个GET响应和一个POST响应。但是有可能在单个POJO中实现这一点吗??考虑到POJO中有很多字段,我不想只为一个字段创建新的POJO。我是否可以基于条件调用注释,这意味着如果方法是POST隐藏字段。或者任何能帮助我在一次POJO中完成工作的方法


共 (1) 个答案

  1. # 1 楼答案

    可能有很多方法,但这里有一种使用@ControllerAdvice。在SpringMVC序列化调用方的响应之前,创建一个类似于下图的ControllerAdvice,并编写逻辑来控制值的可见性

    @ControllerAdvice
    public class GCA implements ResponseBodyAdvice<CxResponse>{
    
        @Override
        public boolean supports(MethodParameter methodParameter, Class aClass) {
            return true;
        }
    
        @Override
        public CxResponse beforeBodyWrite( Data data, MethodParameter methodParameter, MediaType mediaType, Class aClass, 
                ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
            if( serverHttpRequest.getMethodValue().equalsIgnoreCase( "POST" ) ) {
                data.setEndDate( null );
            }
        
            return data;
        }
    }
    

    希望您意识到所有请求都将调用此ControllerAdvice;因此,您可能需要稍微自定义它的范围,或者用代码控制它