后端自定义RunTimeException工具类校验前端输入,使前端节约3000行代码
Posted SmallCuteMonkey80%
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了后端自定义RunTimeException工具类校验前端输入,使前端节约3000行代码相关的知识,希望对你有一定的参考价值。
文章目录
1.自定义MyInfoException工具类extneds后端RunTimeException工具类
public class MyInfoException extends RuntimeException
private int code;
public MyInfoException(int code, String msg)
super(msg);
this.code = code;
// public MyInfoException(ErrorCodeEnum err)
// super(err.msg());
// this.code = err.code();
//
public int getCode()
return code;
public void setCode(int code)
this.code = code;
2.统一的响应类
public class ObjectRestResponse<T> extends BaseResponse
T data;
public ObjectRestResponse( )
public ObjectRestResponse data(T data)
this.setData(data);
return this;
public ObjectRestResponse(int resultCode, String resultMsg, T data)
this.setResultCode(resultCode);
this.setResultMsg(resultMsg);
this.data = data;
public T getData()
return data;
public void setData(T data)
this.data = data;
/**
* 不推荐使用
*
* 设置错误提示信息,默认返回resultCode=500
*
* @param msg 提示信息
* @author zdh
* @modifyTime 2019/11/26 16:32:00
*/
public void setErrorMsg(String msg)
this.setResultCode(RestCodeConstants.EX_OTHER_CODE);
this.setResultMsg(msg);
/**
* 不推荐使用
*
* 设置成功信息,默认返回resultCode=0
*
* @param msg 提示信息
* @author lh
* @modifyTime 2019年12月4日 14:50:01
*/
public void setSuucessMsg(String msg)
this.setResultCode(RestCodeConstants.RESULT_SUCCESS);
this.setResultMsg(msg);
public static void main(String[] args)
List<SelectVo> list = new ArrayList<SelectVo>();
SelectVo selectVo = new SelectVo();
selectVo.setValue("1234");
selectVo.setOption("op1");
list.add(selectVo);
SelectVo selectVo1 = new SelectVo();
selectVo1.setValue("332");
selectVo1.setOption("op2");
list.add(selectVo1);
ObjectRestResponse<List<SelectVo>> response = new ObjectRestResponse<List<SelectVo>>();
response.setData(list);
response.setResultCode(0);
response.setResultMsg("success");
System.out.println(JSON.toJSONString(response));
2.校验类的封装
2.1后端的controller层会调用这个方法,可以知道如果异常会默认抛出自定义的异常码500,和相关的方法内的异常消息。
package com.citicpru.clmmaint.biz;
import com.citicpru.clmmaint.utils.CheckUtils;
import com.citicpru.clmmaint.utils.ConvertUtil;
import com.citicpru.clmmaint.utils.SearchConditionUtil;
import com.citicpru.clmwork.vo.SearchCondition;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.List;
/**
* 高级搜索 service
* @author
*/
@Component
public class AdvancedSearchBiz
public StringBuffer searchParamers(List<SearchCondition> searchConditionList) throws Exception
//select * from table where 1=1 拼上 条件(关联符号在前)
StringBuffer searchParamer = new StringBuffer();
String space = " ";
for (SearchCondition searchCondition : searchConditionList )
String field = ConvertUtil.doLowerCase(searchCondition.getField());
String searchValue = searchCondition.getSearchValue();
String value =ConvertUtil.toConvert(searchValue);
String searchVal;
if(CheckUtils.isNumber(value) == false)
searchVal = "'"+value+"'";
else
searchVal = value;
String condition = searchCondition.getCondition();
String relation = searchCondition.getRelation();
// = 拼接的情况
if (condition.equals(SearchConditionUtil.EQUALS))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// <> 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_EQUALS))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// > 拼接的情况
if (condition.equals(SearchConditionUtil.GREATER_THAN))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// < 拼接的情况
if (condition.equals(SearchConditionUtil.LESS_THAN))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// >= 拼接的情况
if (condition.equals(SearchConditionUtil.GREATER_EQUALS))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// <= 拼接的情况
if (condition.equals(SearchConditionUtil.LESS_EQUALS))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(searchVal).
append(space);
// in 拼接的情况
if (condition.equals(SearchConditionUtil.IN))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("(")
.append(space).append(CheckUtils.appendSymbol(value))
.append(space).append(") ");
// not in 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_IN))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("(")
.append(space).append(CheckUtils.appendSymbol(value))
.append(space).append(") ");
// like 拼接的情况
if (condition.equals(SearchConditionUtil.LIKE))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("'%").append(value).append("%'").
append(space);
// not like 拼接的情况
if (condition.equals(SearchConditionUtil.NOT_LIKE))
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append("'%").append(value).append("%'").
append(space);
// between 拼接的情况 between... and...
// not between 拼接的情况
if (condition.equals(SearchConditionUtil.BETWEEN))
String[] contentUnits = value.split(",");
if (contentUnits.length != 2)
throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
String leftContentUnit = contentUnits[0];
String rightContentUnit = contentUnits[1];
if(CheckUtils.isNumber(leftContentUnit) == false)
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition).append(space)
.append("'").append(leftContentUnit).append("'")
.append(space).append("and").append(space)
.append("'").append(rightContentUnit).append("' ");
else
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(leftContentUnit)
.append(space).append("and")
.append(space).append(rightContentUnit).
append(space);
if (condition.equals(SearchConditionUtil.NOT_BETWEEN))
String[] contentUnits = value.split(",");
if (contentUnits.length != 2)
throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
String leftContentUnit = contentUnits[0];
String rightContentUnit = contentUnits[1];
if(CheckUtils.isNumber(leftContentUnit) == false)
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition).append(space)
.append("'").append(leftContentUnit).append("'")
.append(space).append("and").append(space)
.append("'").append(rightContentUnit).append("' ");
else
searchParamer.append(space).append(relation)
.append(space).append(field)
.append(space).append(condition)
.append(space).append(leftContentUnit)
.append(space).append("and")
.append(space).append(rightContentUnit).
append(space)以上是关于后端自定义RunTimeException工具类校验前端输入,使前端节约3000行代码的主要内容,如果未能解决你的问题,请参考以下文章