This is an automated email from the ASF dual-hosted git repository.
mridulpathak pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 3b421898f5 Keep the ignore-when of form fields inherited through form
extends
3b421898f5 is described below
commit 3b421898f52f1ca56cb74433b327ec6344f27e71
Author: Mridul Pathak <[email protected]>
AuthorDate: Thu Oct 29 20:20:49 2026 +0530
Keep the ignore-when of form fields inherited through form extends
Neither copy constructor of ModelFormFieldBuilder copied ignoreWhen, so a
field inherited through form extends, or copied from another builder, lost its
ignore-when condition and was always rendered. Both constructors now copy it,
using a new ModelFormField.getIgnoreWhen() getter that returns the expression
like getUseWhen() does. A unit test covers both cases.
---
.../org/apache/ofbiz/widget/model/ModelFormField.java | 4 ++++
.../ofbiz/widget/model/ModelFormFieldBuilder.java | 2 ++
.../org/apache/ofbiz/widget/model/ModelFormTest.java | 17 +++++++++++++++++
3 files changed, 23 insertions(+)
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
index 3420e4ee77..c123cc06eb 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormField.java
@@ -752,6 +752,10 @@ public final class ModelFormField {
return "";
}
+ public FlexibleStringExpander getIgnoreWhen() {
+ return ignoreWhen;
+ }
+
public String getIgnoreWhen(Map<String, Object> context) {
if (UtilValidate.isNotEmpty(this.ignoreWhen)) {
return this.ignoreWhen.expandString(context);
diff --git
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
index 8241c4dbe2..7c57a21ac0 100644
---
a/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
+++
b/framework/widget/src/main/java/org/apache/ofbiz/widget/model/ModelFormFieldBuilder.java
@@ -298,6 +298,7 @@ public class ModelFormFieldBuilder {
this.headerLink = modelFormField.getHeaderLink();
this.headerLinkStyle = modelFormField.getHeaderLinkStyle();
this.idName = modelFormField.getIdName();
+ this.ignoreWhen = modelFormField.getIgnoreWhen();
this.mapAcsr = modelFormField.getMapAcsr();
this.modelForm = modelFormField.getModelForm();
this.name = modelFormField.getName();
@@ -341,6 +342,7 @@ public class ModelFormFieldBuilder {
this.headerLink = builder.getHeaderLink();
this.headerLinkStyle = builder.getHeaderLinkStyle();
this.idName = builder.getIdName();
+ this.ignoreWhen = builder.getIgnoreWhen();
this.mapAcsr = builder.getMapAcsr();
this.modelForm = builder.getModelForm();
this.name = builder.getName();
diff --git
a/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
b/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
index 6d8a8aaf60..a181639550 100644
---
a/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
+++
b/framework/widget/src/test/java/org/apache/ofbiz/widget/model/ModelFormTest.java
@@ -139,6 +139,23 @@ public final class ModelFormTest {
verify(renderer, never()).renderFormatSingleWrapperOpen(any(), any(),
same(parent));
}
+ @Test
+ public void testInheritedFieldKeepsIgnoreWhen() throws Exception {
+ String xml = "<forms>"
+ + "<form name=\"Parent\" type=\"single\">"
+ + "<field name=\"a\" ignore-when=\"true\"><display/></field>"
+ + "</form>"
+ + "<form name=\"Child\" type=\"single\" extends=\"Parent\"/>"
+ + "</forms>";
+ Element rootElement = UtilXml.readXmlDocument(xml, false,
true).getDocumentElement();
+ ModelSingleForm child = new
ModelSingleForm(UtilXml.childElementList(rootElement, "form").get(1), "test",
+ null, null, null);
+ ModelFormField field = child.getFieldList().get(0);
+ Assertions.assertEquals("true", field.getIgnoreWhen(context),
"Inherited field should keep ignore-when");
+ ModelFormField copy = ModelFormField.from(new
ModelFormFieldBuilder(new ModelFormFieldBuilder(field)));
+ Assertions.assertEquals("true", copy.getIgnoreWhen(context), "Copied
builder should keep ignore-when");
+ }
+
private static CommonWidgetModels.Parameter
getParameterOnly(ModelForm.UpdateArea updateArea) {
Assertions.assertNotNull(updateArea.getParameterList());
Assertions.assertEquals(updateArea.getParameterList().size(), 1,
"Parameter size should be one");