📄 paramchecker.java
字号:
else {
isValid = false;
addMsg("err_need_less", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
} else if (leftField.type.equals(this.TYPE_LONG)) {
long a = ((Long) leftField.value).longValue();
long b = ((Long) rightField.value).longValue();
if (a < b)
;
else {
isValid = false;
addMsg("err_need_less", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
}
} else if (token.equals("=")) {
if (leftField.type.equals(this.TYPE_INT)) {
int a = ((Integer) leftField.value).intValue();
int b = ((Integer) rightField.value).intValue();
if (a == b)
;
else {
isValid = false;
addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
} else if (leftField.type.equals(this.TYPE_DATE)) {
Date a = (Date) leftField.value;
Date b = (Date) rightField.value;
if (DateUtil.compare(a, b) == 0)
;
else {
isValid = false;
addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
} else if (leftField.type.equals(this.TYPE_LONG)) {
long a = ((Long) leftField.value).longValue();
long b = ((Long) rightField.value).longValue();
if (a == b)
;
else {
isValid = false;
addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
} else if (leftField.type.equals(this.TYPE_BOOLEAN)) {
boolean a = ((Boolean) leftField.value).booleanValue();
boolean b = ((Boolean) rightField.value).booleanValue();
if (a == b)
;
else {
isValid = false;
addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
} else if (leftField.type.equals(this.TYPE_STRING)) {
String a = (String) leftField.value;
String b = (String) rightField.value;
if (a.equals(b))
;
else {
isValid = false;
addMsg("err_need_equal", new String[] {leftFieldDesc, "" +rightFieldDesc});
}
}
} else {
isValid = false;
addMsg("err_format", new String[] {rulePairStr});
}
return isValid;
}
/**
* 检查联合条件,如两个表单域之间的相等、大于、小于
* 如:onerror=exit|resume,pwd=pwd1,date1>date2,num1<=num2
*/
public void checkUnionCond(Vector rules) throws CheckErrException {
int len = rules.size();
// 先找到onerror
boolean isValid = true;
for (int i = 0; i < len; i++) {
isValid = true;
String rule = (String) rules.get(i);
rule = rule.trim();
if (rule.indexOf(">=")!=-1) {
isValid = this.checkUnionCond(rule, ">=");
} else if (rule.indexOf("<=")!=-1) {
isValid = this.checkUnionCond(rule, "<=");
} else if (rule.indexOf(">")!=-1) {
isValid = this.checkUnionCond(rule, ">");
} else if (rule.indexOf("<")!=-1) {
isValid = this.checkUnionCond(rule, "<");
} else if (rule.indexOf("=")!=-1) {
isValid = this.checkUnionCond(rule, "=");
} else {
addMsg("err_format", new String[] {rule});
if (onErrorExit)
break;
}
if (!isValid) {
if (onErrorExit)
break;
}
}
}
public void doCheck(FormRule fr) throws CheckErrException, ErrMsgException {
if (fr==null)
throw new ErrMsgException(LoadString("err_formrule_none", new String[] {}));
onErrorExit = fr.isOnErrorExit();
formResource = fr.getRes();
check(fr.getRules());
checkUnionCond(fr.getUnionRules());
if (msgs.size()!=0)
throw new ErrMsgException(getMessage(false));
}
public void check(Vector rules) throws CheckErrException, ErrMsgException {
Iterator ir = rules.iterator();
while (ir.hasNext()) {
String rule = (String) ir.next();
checkField(rule);
}
}
public void checkField(String rule) throws CheckErrException, ErrMsgException {
rule = rule.trim();
if (rule.startsWith(this.TYPE_STRING)) {
checkFieldString(rule);
} else if (rule.startsWith(this.TYPE_INT)) {
checkFieldInt(rule);
} else if (rule.startsWith(this.TYPE_DATE)) {
checkFieldDate(rule);
} else if (rule.startsWith(this.TYPE_STRING_ARRAY)) {
checkFieldStringArray(rule);
} else if (rule.startsWith(this.TYPE_INT_ARRAY)) {
checkFieldIntArray(rule);
} else if (rule.startsWith(this.TYPE_LONG)) {
checkFieldLong(rule);
} else if (rule.startsWith(this.TYPE_BOOLEAN)) {
checkFieldBoolean(rule);
}
else
throw new ErrMsgException(LoadString("err_type", new String[] {rule}));
}
public String parseFieldDesc(String desc) {
// logger.info("parseFieldDesc desc=" + desc + " formResource=" + formResource);
if (formResource==null || formResource.equals(""))
return desc;
if (!desc.startsWith("#"))
return desc;
else {
String key = desc.substring(1, desc.length()).trim();
return SkinUtil.LoadString(request, formResource, key);
}
}
public void checkFieldIntArray(String ruleStr) throws CheckErrException {
String fieldName = "";
String[] rule = split(ruleStr);
if (rule == null) {
addMsg("err_format", new String[] {ruleStr});
return;
}
int len = rule.length;
if (len < 4) {
addMsg("err_format", new String[] {ruleStr});
return;
}
fieldName = rule[1];
String fieldDesc = parseFieldDesc(rule[2]);
String[] values = getFieldValues(fieldName);
int[] intValues = null;
len = 0;
if (values!=null) {
len = values.length;
intValues = new int[len];
}
for (int i=0; i<len; i++) {
try {
intValues[i] = Integer.parseInt(values[i]);
}
catch (Exception e) {
addMsg("err_not_num", new String[] {fieldDesc});
break;
}
}
Field f = new Field(fieldName, fieldDesc, intValues, this.TYPE_INT_ARRAY);
fields.put(fieldName, f);
String NULL = rule[3];
if (values == null) {
if (NULL.equalsIgnoreCase("not")) {
addMsg("err_want", new String[] {fieldDesc});
return;
}
}
}
public void checkFieldStringArray(String ruleStr) throws CheckErrException {
String fieldName = "";
String[] rule = split(ruleStr);
if (rule == null) {
addMsg("err_format", new String[] {ruleStr});
return;
}
int len = rule.length;
if (len < 4) {
addMsg("err_format", new String[] {ruleStr});
return;
}
fieldName = rule[1];
String fieldDesc = parseFieldDesc(rule[2]);
String[] values = getFieldValues(fieldName);
Field f = new Field(fieldName, fieldDesc, values, this.TYPE_STRING_ARRAY);
fields.put(fieldName, f);
String NULL = rule[3];
if (values == null) {
if (NULL.equalsIgnoreCase("not")) {
addMsg("err_want", new String[] {fieldDesc});
}
else if (NULL.equals("allow"))
;
else {
addMsg("err_format", new String[] {NULL});
}
}
}
public void checkFieldBoolean(String ruleStr) throws CheckErrException {
String fieldName = "";
String[] rule = split(ruleStr);
if (rule == null) {
addMsg("err_format", new String[] {ruleStr});
return;
}
int len = rule.length;
if (len < 4) {
addMsg("err_format", new String[] {ruleStr});
return;
}
fieldName = rule[1];
String value = getFieldValue(fieldName);
checkFieldBoolean(ruleStr, value);
}
public void checkFieldBoolean(String ruleStr, String value) throws CheckErrException {
String fieldName = "";
String type = "";
String fieldDesc = "";
String[] rule = split(ruleStr);
if (rule == null) {
addMsg("err_format", new String[] {ruleStr});
return;
}
int len = rule.length;
if (len < 4) {
addMsg("err_format", new String[] {ruleStr});
return;
}
type = rule[0];
fieldName = rule[1];
fieldDesc = parseFieldDesc(rule[2]);
String NULL = rule[3];
if (value == null) {
if (NULL.equalsIgnoreCase("not")) {
addMsg("err_want", new String[] {fieldDesc});
return;
}
else if (NULL.equals("allow"))
;
else {
value = NULL;
}
}
Boolean bu;
if (value!=null && value.equals("true") || value.equals("1"))
bu = new Boolean(true);
else
bu = new Boolean(false);
boolean isValid = true;
// 存储field值
Field f = new Field(fieldName, fieldDesc, bu, type);
fields.put(fieldName, f);
// 验证
// ...
if (!isValid) {
if (onErrorExit) {
throw new CheckErrException(msgs);
}
}
}
public void checkFieldDate(String ruleStr) throws CheckErrException {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -