君且行。 2021-04-14 15:37 采纳率: 100%
浏览 105
已采纳

寻求一个代替很多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");
    }
  • 写回答

5条回答 默认 最新

  • 阿呆呆1 2021-04-14 15:56
    关注
    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();
                    }
    
            }
        }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?