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");

Reply via email to