You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义Liferay DDMFormFieldType无法在规则数据提供程序输入中显示如何解决

Liferay 7.3 自定义DDMFormFieldType支持数据提供程序输入参数配置方案

需要补充以下几处代码配置:

  • 第一步:在自定义DDMFormFieldType实现类的@Component注解中新增数据提供程序关联属性

    @Component(
        property = {
            // 保留你原有配置的其他属性,比如组件名称、图标、标签等
            "ddm.form.field.type.data.provider.input.type=text",
            "ddm.form.field.type.supports.data.provider.input=true",
            "ddm.form.field.type.allowed.for.rule.condition=true"
        },
        service = DDMFormFieldType.class
    )
    public class CustomTextDDMFormFieldType extends BaseDDMFormFieldType {
        // 你的原有实现逻辑
    }
    

    其中ddm.form.field.type.data.provider.input.type=text就是用来匹配数据提供程序输入类型的属性,和你提到的数据提供程序输入类型text对应即可完成类型匹配。

  • 第二步:重写字段值访问器方法,确保规则引擎能正确读取字段的文本值

    @Override
    public DDMFormFieldValueAccessor<String> getDDMFormFieldValueAccessor() {
        // 直接返回字符串类型的默认值访问器即可,如果有特殊取值逻辑可以自定义实现该接口
        return new DefaultDDMFormFieldValueAccessor<>(String.class);
    }
    
  • 第三步:修改Soy模板的节点属性,适配前端规则引擎识别
    在你自定义字段的Soy模板中,给输入控件的根节点或者输入标签本身添加属性:
    data-ddm-field-type="text"
    同时保持字段值的双向绑定逻辑和Liferay原生文本字段一致,避免前端规则读取值异常。

  • 可选配置:如果需要支持数据提供程序的输出结果回填到该自定义字段,可以额外在@Component的property中添加:
    ddm.form.field.type.data.provider.output.type=text

完成上述配置后重新部署组件,进入表单规则配置界面,选择对应数据提供程序后,输入参数下拉列表就可以选择你的自定义文本字段了。


内容的提问来源于stack exchange,提问作者Andre Albert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:03