自定义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
相关产品推荐
相关产品推荐

