一、需求说明
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