作为表单多行验证器

注入的变量(根据表单不同的元素,注入的变量也会略有不同):

    • element - 验证器验证的元素. (org.joget.apps.form.model.Element)
    • rows - 元素的提交值. (包含一个或多个 org.joget.apps.form.model.FormRow)
    • formData - 表单数据. (org.joget.apps.form.model.FormData)

预期返回的对象:

    • 返回一个布尔值,结果取决于验证通过与否.

示例:

表单表格的非空校验

import java.util.Arrays;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.Form;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRow;
import org.joget.apps.form.model.FormRowSet;
import org.joget.apps.form.service.FormUtil;
   
public boolean validate(Element element, FormRowSet rows, FormData formData) {
    boolean result = true ;
    if (rows != null && !rows.isEmpty()) {
        String id = FormUtil.getElementParameterName(element);
        System.out.println(rows.size());
        for (FormRow row : rows) {
            try {
                //get form field value by fieldid
                String s1 = row.getProperty("mobile");
                if(null == s1 || "".equals(s1)){
                    //From show Error Info
                    formData.addFormError(id, "mobile不能为空");
                    result=false;
                    return result;
                }
               
            } catch (Exception e) {}
        }
    }
    return result;
}
   
//call validate method with injected variable
return validate(element, rows, formData);


注意:如果表格是spread sheet类型,备用行数不要用"0",改为"1",否则最后一行的空行也会进入非空判断


表单表格某列的所有值一致性判断:

import java.util.Arrays;
import org.joget.apps.app.service.AppUtil;
import org.joget.apps.form.model.Element;
import org.joget.apps.form.model.Form;
import org.joget.apps.form.model.FormData;
import org.joget.apps.form.model.FormRow;
import org.joget.apps.form.model.FormRowSet;
import org.joget.apps.form.service.FormUtil;
import java.util.HashSet;

public boolean validate(Element element, FormRowSet rows, FormData formData) {
    boolean result = true ;
    if (rows != null && !rows.isEmpty()) {
        String id = FormUtil.getElementParameterName(element);
        /*---列一致性校验开始---*/
        HashSet values=new HashSet();
        for(FormRow row : rows){
            values.add(row.getProperty("voucherCurrency"));
        }
        if(values.size()>1){
            formData.addFormError(id, "币种需要一样!");
            return false;
        }
        /*---列一致性校验结束---*/
    }
    return result;
}

return validate(element, rows, formData);


作为表单验证器

注入的变量(根据表单不同的元素,注入的变量也会略有不同):

    • element - 验证器验证的元素. (org.joget.apps.form.model.Element)
    • values - 元素的提交值. (java.lang.String[])
    • formData - 表单数据. (org.joget.apps.form.model.FormData)

预期返回的对象:

    • 返回一个布尔值,结果取决于验证通过与否.

示例: