package com.aggrepoint.winlet.form;
import java.util.Collection;
import java.util.function.Function;
/**
*
* @author Jiangming Yang (yangjm@gmail.com)
*/
public interface Form {
/** 判断当前是是否在进行表单单字段校验 */
public boolean isValidateField();
/** 若当前在进行表单字段校验,返回被校验的字段的名称 */
public String getValidateFieldName();
/** 若当前在进行表单字段校验,返回被校验的字段的ID */
public String getValidateFieldId();
/**
* 判断当前是否需要对字段field进行校验
*
* @param field
* @return
*/
public boolean validate(String field);
/**
* 对字段field进行校验
*
* @param field
* @param when
* true表示校验未通过
* @param error
* 如果校验失败,使用的错误信息
*/
public Form addError(String field, Function<String, Boolean> when,
String error);
public Form addError(String field, boolean when, String error);
public Form addError(String field, Function<String, Boolean> when,
String error, boolean validateEvenErrorExist);
public Form addError(String field, boolean when, String error,
boolean validateEvenErrorExist);
/**
* 获取字段field的值。
*
* @param field
* @return
*/
public String getValue(String field);
/**
* 获取字段field的值,如果不存在则返回缺省值。
*
* @param field
* @param def
* @return
*/
public String getValue(String field, String def);
/**
* 获取字段field的值。
*
* @param field
* @return
*/
public String[] getValues(String field);
public void setValue(String field, String value);
public void setValue(String fields, String[] value);
/**
* 判断表单中是否存在校验错误。
*
* @return
*/
boolean hasError();
boolean hasError(boolean fieldErrorsOnly);
boolean hasError(String field);
boolean hasErrorOrValidateField();
boolean hasErrorOrValidateField(boolean fieldErrorsOnly);
/**
* 获取字段上当前存在的所有校验错误
*
* @param field
* @return
*/
public String[] getErrors(String field);
/**
* 给字段添加校验错误信息。
*
* @param field
* @param error
*/
public void addError(String field, String error);
/**
* 清除指定字段上所有校验错误信息。
*
* @param field
*/
public void clearError(String field);
public void clearErrors();
/**
* 将指定字段的状态改为禁用。
*
* @param field
*/
public void setDisabled(String field);
/**
* 将指定字段的状态改为启用。
*
* @param field
*/
public void setEnabled(String field);
/**
* 显示表单中的元素。
*
* @param field
*/
public void show(String selector);
/**
* 不显示表单中的元素。
*
* @param field
*/
public void hide(String selector);
/**
* 获取当前所有处于禁用状态的字段。
*
* @return
*/
public String[] getDisabledFields();
/**
* 是否存在field
*
* @param field
* @return
*/
public boolean hasField(String field);
void setSelectOptions(String field, Collection<? extends SelectOption> list);
public String mapStatus(String vf, String vfError, String error);
public String mapStatus(String vf, String vfError, String error,
String passed);
public Form noError(Process process) throws Exception;
}