寻求一个代替很多if方法得简洁写法?

一、需求说明

1、入参是Xml格式得字符串。

<Request>
    <Head>
        <sign>9EDC1556DCE89DABDA04C27E3B4250CC</sign>
        <requestUUID>620400-255479FBF0DD4E249E93B5FDC9AFED32</requestUUID>
    </Head>
    <Body>
        <id>103B50523201900000055</id>
        <Url>http://www.baidu.com</Url>
        <Code>00012</Code>
    </Body>
</Request>

2、需要判断非空得值是否为null。

3、相应字段为null,返回  message=“XXX(属性名)不能为空”

TIPS:其实属性值有很多,要写好多if判断,想寻求一下更加简洁得方法,尝试了@NotEmpty,@Notisblank,好像不行

我只会这么写,有没有大佬指教一下给指导,指导,更加简洁方便得写法

public String query(HttpServletRequest request) {

        String requestXml = null;
        XmlVoUtil xmlVoUtil = new XmlVoUtil();
        try {
            requestXml = StreamUtils.copyToString(request.getInputStream(), Charset.forName("UTF-8"));
            Request request = XmlVoUtil.converyToJavaBean(requestXml, Request.class);
           //其实有很多属性,不想满篇都是if判断,该如何简洁得写
            if (StringUtil.isEmpty(request.Body.id)) {
                return Analysis.response("false","id不能为空");
            }
           
            if (StringUtil.isEmpty(request.Body.Url)) {
                return Analysis.response("false","地址不能为空");
            }
         
            return Analysis.response("true", "成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Analysis.response("false", "系统异常");
        }
    }

public String response(String result, String message) {
        Response response = new Response();
        response.Flag = result;
        response.Message = message;
        XmlVoUtil xmlVoUtil = new XmlVoUtil();
        String responseBodyXml = xmlVoUtil.bean2xml(response, "UTF-8");
        return xmlVoUtil.bean2xml(responseBodyXml ,"UTF-8");
    }

 

public void getValue(Request request){
        Field[] field = request.getClass().getDeclaredFields();
        for(int j=0 ; j<field.length ; j++){
            String name = field[j].getName();

            name = name.substring(0,1).toUpperCase()+name.substring(1);
            String type = field[j].getGenericType().toString();
                //对象里面什么类型 这里 m调整成什么类型 string这样的需要特殊调整
                //if(type.equals("class java.lang.String")) 判断方式是这样
                Object m;
                String value;
                try {
                    m = selectIdListDto.getClass().getMethod("get"+name);
                    value =  m.invoke(selectIdListDto);
                    if(null==m){
                        return Analysis.response("false",name+"不能为空");;
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                }

        }
    }

 

import java.lang.reflect.Field;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;

/**
 * @author Tate
 * @date 2020-12-18 11:10
 * @title 判断对象中属性值是否全为空
 * 1、判断实体对象是否为空
 * 2、判断对象所有属性是否为空
 * 3、特别注意,实体类中如果有基本数据类型,会影响判断
 */
@Slf4j
public class ObjectIsNullUtil {

    /**
     * 判断对象中属性值是否全为空
     *
     * @param object
     * @return
     */
    public static boolean checkObjectFieldIsNull(Object object) {
        if (null == object) {
            log.error("The entity object is empty.");
            return false;
        }

        try {
            for(Field field : object.getClass().getDeclaredFields()){
                field.setAccessible(true);
                if(StringUtils.isEmpty(field.get(object))){
                    log.error("The property in the object is null. attribute name: {}", field.getName());
                    return false;
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("Object and attribute values failed. error: {}", e.getMessage());
            return false;
        }
        return true;
    }
}

// 调用  ObjectIsNullUtil.checkObjectFieldIsNull(request.Body)

 

public void getValue(Request request){
        Field[] field = request.getClass().getDeclaredFields();
        for(int j=0 ; j<field.length ; j++){
            String name = field[j].getName();

            name = name.substring(0,1).toUpperCase()+name.substring(1);
            String type = field[j].getGenericType().toString();
                //对象里面什么类型 这里 m调整成什么类型 string这样的需要特殊调整
                //if(type.equals("class java.lang.String")) 判断方式是这样
                Object m;
                String value;
                try {
                    m = selectIdListDto.getClass().getMethod("get"+name);
                    value =  m.invoke(selectIdListDto);
                    if(null==m){
                        return Analysis.response("false",name+"不能为空");;
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                }

        }
    }

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y