用法

抽象类

org.joget.apps.form.model.Element

方法细节

抽象方法
renderTemplate
public abstract java.lang.String renderTemplate(org.joget.apps.form.model.FormData formData,java.util.Map dataModel)

前端用户界面的HTML模板。

参数:

可重写的方法
FormatData
public org.joget.apps.form.model.FormRowSet formatData(org.joget.apps.form.model.FormData formData)

检索加载或提交的表单数据并为商店资料夹设置格式的方法。格式化的数据将被存储并返回到FormRowSet中。

formatDataForValidation
public org.joget.apps.form.model.FormData formatDataForValidation(org.joget.apps.form.model.FormData formData)

在执行验证之前,用于在请求参数中执行格式数据的覆盖方法

selfValidate
public java.lang.Boolean selfValidate(org.joget.apps.form.model.FormData formData)

用于覆盖的方法为该字段执行指定验证。

错误消息可以显示以下代码:

String id = FormUtil.getElementParameterName(this);
formData.addFormError(id,"Error !!");
render
public java.lang.String render(org.joget.apps.form.model.FormData formData,java.lang.Boolean includeMetaData)

呈现用于UI的HTML模板,并具有表单构建器设计模式的选项。这个方法将调用抽象方法  renderTemplate  进行渲染。

参数:

renderErrorTemplate
public java.lang.String renderErrorTemplate(org.joget.apps.form.model.FormData formData,java.util.Map dataModel)

包含前端用户界面错误的HTML模板。这个方法将调用抽象方法  renderTemplate  进行渲染。

参数:

renderReadOnlyTemplate
public java.lang.String renderReadOnlyTemplate(org.joget.apps.form.model.FormData formData,java.util.Map dataModel)

用于前端UI的只读HTML模板(目前未使用)

参数:

continueValidation
public boolean continueValidation(org.joget.apps.form.model.FormData formData)

标记以指示是否继续验证后代元素。

getDynamicFieldNames
public Collection <java.lang.String> getDynamicFieldNames()

用于通过返回额外的列名称在数据库中创建多个表单数据列。

hasError
public java.lang.Boolean hasError(org.joget.apps.form.model.FormData formData)

标记以指示该字段是否通过了验证过程

isAuthorize
public java.lang.Boolean isAuthorize(org.joget.apps.form.model.FormData formData)

标记以指示当前登录用户是否有权在表单中查看该字段。

它使用属性键"权限"来检索表单权限插件。

效用方法
getChildren
public java.util.Collection <org.joget.apps.form.model.Element> getChildren()

检索此字段下的所有子表单字段元素

getChildren
public void setChildren(java.util.Collection <org.joget.apps.form.model.Element> children)

检索此字段下的所有子表单字段元素

setChildren
public void setChildren(java.util.Collection <org.joget.apps.form.model.Element> children)

将表单字段设置为此字段的子项

getParent
public org.joget.apps.form.model.Element getParent() 

返回此元素的直接父项。

setParent
public void setParent(org.joget.apps.form.model.Element parent)

设置此元素的直接父级。

getPrimaryKeyValue
public java.lang.String getPrimaryKeyValue(org.joget.apps.form.model.FormData formData)

返回当前元素的主键值。默认为表单的主键值。

getLoadBinder
public org.joget.apps.form.model.FormLoadBinder getLoadBinder()

获取加载绑定器

setLoadBinder
public void setLoadBinder(org.joget.apps.form.model.FormLoadBinder loadBinder)

设置装订夹

getOptionsBinder
public org.joget.apps.form.model.FormLoadBinder getOptionsBinder()

获取选项活页夹

setOptionsBinder
public void setOptionsBinder(org.joget.apps.form.model.FormLoadBinder optionsBinder)

设置选项活页夹

getStoreBinder
public org.joget.apps.form.model.FormStoreBinder getStoreBinder()

获取商店活页夹

setStoreBinder
public void setStoreBinder(org.joget.apps.form.model.FormStoreBinder storeBinder)

设置商店活页夹

getValidator
public org.joget.apps.form.model.Validator getValidator()

获取验证器

setValidator
public void setValidator(org.joget.apps.form.model.Validator validator)

设置一个验证器

getCustomParameterName
public java.lang.String getCustomParameterName()

如果非null,则将其用作元素的HTML输入名称。

setCustomParameterName
public void setCustomParameterName(java.lang.String customParameterName)

为元素的HTML输入名称设置自定义参数名称。

getDefaultPropertyValues
public java.lang.String getDefaultPropertyValues()

将默认插件属性选项值设置为在窗体生成器中添加一个新的字段。

org.joget.apps.form.model.AbstractSubForm

字段细节

常量 
PROPERTY_PARENT_SUBFORM_ID
public static final String PROPERTY_PARENT_SUBFORM_ID ="parentSubFormId";

用于检索父窗体中的字段ID的属性键,用于将子窗体主键存储为引用键。 

PROPERTY_SUBFORM_PARENT_ID
public static final String PROPERTY_SUBFORM_PARENT_ID ="subFormParentId";

用于检索子窗体中的字段ID的属性键,用于将父窗体主键存储为外键。 

方法细节

可重写的方法
loadSubForm
受保护的org.joget.apps.form.model.Form loadSubForm(org.joget.apps.form.model.FormData parentFormData)throws org.springframework.beans.BeansException

以表格形式检索Form对象。此方法将使用属性键"formDefId"或"json"中的任一值  来构造Form对象。

updateElementParameterNames
protected void updateElementParameterNames(org.joget.apps.form.model.Element element,java.lang.String prefix)

使用前缀更新子表单中字段元素的所有参数名称

populateParentWithSubFormKey
protected void populateParentWithSubFormKey(org.joget.apps.form.model.FormData formData)

根据此常数PROPERTY_PARENT_SUBFORM_ID的属性键,使用子窗体的主键更新父窗体字段值 

populateSubFormWithParentKey
protected void populateSubFormWithParentKey(org.joget.apps.form.model.FormData formData)

根据此常量PROPERTY_SUBFORM_PARENT_ID的属性键,使用父表单的主键更新子表单字段值 

checkForRecursiveForm
protected boolean checkForRecursiveForm(org.joget.apps.form.model.Element e,java.lang.String id)

检查子表单不存在于父元素树中。

getSubForm
受保护的org.joget.apps.form.model.Form getSubForm(org.joget.apps.form.model.FormData formData)

从其子对象获取对象。

接口

org.joget.apps.form.model.FormBuilderPaletteElement

方法细节

接口方法
getFormBuilderCategory
public java.lang.String getFormBuilderCategory()

“表单构建器”调板中元素的类别

getFormBuilderPosition
public int getFormBuilderPosition()

订购位置。调色板根据位置值以类别的升序显示。

getFormBuilderIcon
public java.lang.String getFormBuilderIcon()

“窗体构建器”调板中元素的图标路径。这条路径是相对于上下文路径的。返回NULL以使用默认图标。

getDefaultPropertyValues
public jva.lang.String getDefaultPropertyValues()

将默认插件属性选项值设置为在窗体生成器中添加一个新的字段。这个方法在org.joget.apps.form.model.Element中实现

getFormBuilderTemplate
public java.lang.String getFormBuilderTemplate()

用于在Form Builder中显示新添加字段的HTML模板

org.joget.apps.form.model.FormContainer

org.joget.apps.form.model.FormOptionsElement

org.joget.apps.form.model.FormAjaxOptionsElement

方法细节

接口方法
getControlElement
public org.joget.apps.form.model.Element getControlElement(org.joget.apps.form.model.FormData formData)

获取用于控制此字段的选项的相关字段元素

org.joget.apps.form.model.FormReferenceDataRetriever

方法细节

接口方法
loadFormRows
public org.joget.apps.form.model.FormRowSet loadFormRows(String [] primaryKeyValues,org.joget.apps.form.model.FormData formData)

检索指定主键值数组的表单数据行。

插件属性选项

必要属性 

ID 

 {
 name:'loadBinder',
 label:'@@form.subform.loadBinder@@',
 type:'elementselect',
 options_ajax:'[CONTEXT_PATH]/web/property/json/getElements?classname=org.joget.apps.form.model.FormLoadElementBinder',
 url:'[CONTEXT_PATH]/web/property/json[APP_PATH]/getPropertyOptions',
 value:'org.joget.apps.form.lib.WorkflowFormBinder',
 required:'True'
}

预定义的属性  

loadBinder

 {
 name : 'optionsBinder',
 label : '@@form.checkbox.chooseOptionsBinder@@',
 type : 'elementselect',
 options_ajax : '[CONTEXT_PATH]/web/property/json/getElements?classname=org.joget.apps.form.model.FormLoadOptionsBinder',
 url : '[CONTEXT_PATH]/web/property/json[APP_PATH]/getPropertyOptions'
}

optionsBinder

 {  名称:'optionsBinder',  标签:'@@ form.checkbox.chooseOptionsBinder @@',  键入:'elementselect',  options_ajax:'[CONTEXT_PATH] /web/property/json/getElements?classname=org.joget.apps.form.model.FormLoadOptionsBinder',  url:'[CONTEXT_PATH] / web / property / json [APP_PATH] / getPropertyOptions'  }

permission

 {
 name:'permission',
 label:'@@form.form.permission@@',
 type:'elementselect',
 options_ajax:'[CONTEXT_PATH]/web/property/json/getElements?classname=org.joget.apps.form.model.FormPermission',
 url:'[CONTEXT_PATH]/web/property/json[APP_PATH]/getPropertyOptions'
}

storeBinder

 {
 name:'storeBinder',
 label:'@@form.form.storeBinder@@',
 type:'elementselect',
 options_ajax:'[CONTEXT_PATH]/web/property/json/getElements?classname=org.joget.apps.form.model.FormStoreElementBinder',
 url:'[CONTEXT_PATH]/web/property/json[APP_PATH]/getPropertyOptions'
}

只读

 {
 name : 'readonly',
 label : '@@form.checkbox.readonly@@',
 type : 'checkbox',
 value : 'false',
 options : [{
 value : 'true',
 label : ''
 }]
}

readonlyLabel

 {
 name : 'readonlyLabel',
 label : '@@form.checkbox.readonlyLabel@@',
 type : 'checkbox',
 value : 'false',
 options : [{
 value : 'true',
 label : ''
 }]
}

workflowVariable

 {
 name : 'workflowVariable',
 label : '@@form.checkbox.workflowVariable@@',
 type : 'textfield'
}

{
    name : 'value',
    description : '@@form.checkbox.value.desc@@',
    label : 'Default @@form.checkbox.value@@',
    type : 'textfield'
}
验证器

表单字段元素模板示例

以下是文本字段元素的示例表单字段模板  它使用FreeMaker语法构造。这个模板将被renderTemplate方法使用并返回  

 @Override
public String renderTemplate(FormData formData, Map dataModel) {
 String templateName = "textField.ftl";
 
 // set value
 String value = FormUtil.getElementPropertyValue(this, formData);
 dataModel.put("value", value);
 
 String html = FormUtil.generateElementHtml(this, formData, templateName, dataModel);
 return html;
}

  

<div class="form-cell" ${elementMetaData!}>
    <label class="label">
        ${element.properties.label} <span class="form-cell-validator">${decoration}</span>
        <#if error??>
            <span class="form-error-message">${error}</span>
        </#if>
    </label>
    <#if (element.properties.readonly! == 'true' && element.properties.readonlyLabel! == 'true') >
        <div class="form-cell-value"><span>${value!?html}</span></div>
        <input id="${elementParamName!}" name="${elementParamName!}" type="hidden" value="${value!?html}" />
    <#else>
        <input id="${elementParamName!}" name="${elementParamName!}" type="text" size="${element.properties.size!}" value="${value!?html}" maxlength="${element.properties.maxlength!}" <#if error??>class="form-error-cell"</#if> <#if element.properties.readonly! == 'true'>readonly</#if> />
    </#if>
</div>

说明

教程

相关的社区插件