当前位置: 代码迷 >> J2SE >> java 后台接口入参校验有关问题。希望能听下各位的建议
  详细解决方案

java 后台接口入参校验有关问题。希望能听下各位的建议

热度:40   发布时间:2016-04-23 19:37:53.0
java 后台接口入参校验问题。希望能听下各位的建议
现在公司开发的项目是以第三代电商架构为基础的产品。服务器这块,需要对前端传过来的参数做很严密的校验


但是纠结就纠结在这里,之前为了开发进度,对这一块并没有统一规范,因此产生了五花八门校验代码。


现在我想将这些全部重构一下,提取出一个公用的方法,遇到了下面几个问题:

先上代码
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;
}
  相关解决方案