现在公司开发的项目是以第三代电商架构为基础的产品。服务器这块,需要对前端传过来的参数做很严密的校验
但是纠结就纠结在这里,之前为了开发进度,对这一块并没有统一规范,因此产生了五花八门校验代码。
现在我想将这些全部重构一下,提取出一个公用的方法,遇到了下面几个问题:
先上代码
public Boolean isEmputyAndLength(ControllVo controllVo, String name, String nval, Boolean ismust, int size) {
Boolean flag = true;
if (ismust) {//这是判断参数是可选的 还是必须的
// 参数不能为空
if (StringUtil.isEmpty(nval)) {
controllVo.setState(MsgConstent.parameter_null.getCode());
controllVo.setMsg(MsgConstent.parameter_null.getName().replace("$$$", name));
return false;
}
// 参数长度判断
if (nval.trim().length() > size) {
controllVo.setState(MsgConstent.parameter_toolong.getCode());
controllVo.setMsg(nval + MsgConstent.parameter_toolong.getName() + size);
return false;
}
} else {
// 参数长度判断
try {
if (nval.trim().length() > size) {
controllVo.setState(MsgConstent.parameter_toolong.getCode());
controllVo.setMsg(nval + MsgConstent.parameter_toolong.getName() + size);
return false;
}
} catch (NullPointerException e) {
}
}
return flag;
}
参数有可为空,和必须两种情况,所以我在else代码块中加入了一段看似很笨的逻辑,参数为空的时候
是正常情况,为了让代码正常执行,捕获到Null异常,但是不抛出去,不为空的时候,校验参数长度是否超出范围
所以想请大家帮忙看一下,这样是否可行?
------解决思路----------------------
不知道你是这个意思不
Boolean flag = true;
// 参数不能为空
if (StringUtil.isEmpty(nval)) {
if (ismust) {//这是判断参数是可选的 还是必须的
controllVo.setState(MsgConstent.parameter_null.getCode());
controllVo.setMsg(MsgConstent.parameter_null.getName().replace("$$$", name));
return false;
}
}
// 参数长度判断
if (!StringUtil.isEmpty(nval)&&nval.trim().length() > size) {
controllVo.setState(MsgConstent.parameter_toolong.getCode());
controllVo.setMsg(nval + MsgConstent.parameter_toolong.getName() + size);
return false;
}
return flag;
------解决思路----------------------
public Boolean isEmputyAndLength(ControllVo controllVo, String name, String nval, Boolean ismust, int size) {
if (ismust) {//这是判断参数是可选的 还是必须的
// 参数不能为空
if (StringUtil.isEmpty(nval)) {
controllVo.setState(MsgConstent.parameter_null.getCode());
controllVo.setMsg(MsgConstent.parameter_null.getName().replace("$$$", name));
return false;
}
}
if (nval != null && nval.trim().length() > size) {
controllVo.setState(MsgConstent.parameter_toolong.getCode());
controllVo.setMsg(nval + MsgConstent.parameter_toolong.getName() + size);
return false;
}
return true;
}