This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 19dff43e EMPIREDB-422 Bugfix: ControlTag inside FormGrid with 
in-between components
19dff43e is described below

commit 19dff43e425f1dd15295749b98324ab038fd305b
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue May 21 17:15:07 2024 +0200

    EMPIREDB-422
    Bugfix: ControlTag inside FormGrid with in-between components
---
 .../apache/empire/jsf2/components/ControlTag.java  | 81 ++++++++++++----------
 .../empire/jsf2/utils/TagEncodingHelper.java       |  5 +-
 2 files changed, 45 insertions(+), 41 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
index 51d87cd6..9f0487f6 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
@@ -281,6 +281,46 @@ public class ControlTag extends UIInput implements 
NamingContainer
         return (this.control != null && this.inpInfo != null);
     }
 
+    @Override
+    public String getId()
+    {
+        String compId = super.getId();
+        // Mojarra-Patch since Id might have been set to "null"
+        if ("null".equals(compId))
+            compId =  helper.completeInputTagId(null);
+        // done
+        return compId;
+    }
+    
+    @Override
+    public void setId(String id) 
+    {   // complete
+        id = helper.completeInputTagId(id); 
+        // set
+        super.setId(id);
+    }
+
+    @Override
+    public void setParent(UIComponent parent)
+    {
+        super.setParent(parent);
+        // check
+        if (helper.hasComponentId())
+            return;
+        if (this.renderInfo==null) {
+            /*
+             * Attention: Only works if FormGrid is a direct parent of the 
Control.
+             * Does not work, if other components are between the Control and 
the FormGrid.
+             */
+            this.renderInfo=helper.getControlRenderInfo();
+            if (this.renderInfo!=null && 
this.renderInfo.AUTO_CONTROL_ID!=null) {
+                String compId = 
helper.completeInputTagId(this.renderInfo.AUTO_CONTROL_ID.toString());
+                log.warn("Auto-Setting compontent id for control to {}", 
compId);
+                super.setId(compId);
+            }
+        }
+    }
+
     /**
      * remember original clientId
      * necessary only inside UIData
@@ -315,8 +355,11 @@ public class ControlTag extends UIInput implements 
NamingContainer
         super.encodeBegin(context);
         
         // renderInfo
-        if (this.renderInfo==null)
+        if (this.renderInfo==null) {
             this.renderInfo=helper.getControlRenderInfo();
+            if (this.renderInfo==null)
+                this.renderInfo=ControlRenderInfo.DEFAULT_CONTROL_RENDER_INFO; 
 // No FormGrid found. Use Default!
+        }
 
         // init
         helper.encodeBegin();
@@ -428,42 +471,6 @@ public class ControlTag extends UIInput implements 
NamingContainer
             writer.endElement(renderInfo.CONTROL_TAG);
         }
     }
-    
-    @Override
-    public void setId(String id) 
-    {   // complete
-        id = helper.completeInputTagId(id); 
-        // set
-        super.setId(id);
-    }
-
-    @Override
-    public void setParent(UIComponent parent)
-    {
-        super.setParent(parent);
-        // check
-        if (helper.hasComponentId())
-            return;
-        if (this.renderInfo==null) {
-            this.renderInfo=helper.getControlRenderInfo();
-            if (this.renderInfo!=null && 
this.renderInfo.AUTO_CONTROL_ID!=null) {
-                String compId = 
helper.completeInputTagId(this.renderInfo.AUTO_CONTROL_ID.toString());
-                log.warn("Auto-Setting compontent id for control to {}", 
compId);
-                super.setId(compId);
-            }
-        }
-    }
-
-    @Override
-    public String getId()
-    {
-        String compId = super.getId();
-        // Mojarra-Patch since Id might have been set to "null"
-        if ("null".equals(compId))
-            compId =  helper.completeInputTagId(null);
-        // done
-        return compId;
-    }
 
     @Override
     public void setRequired(boolean required)
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index 254a2038..c9c62084 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -1661,10 +1661,7 @@ public class TagEncodingHelper implements NamingContainer
     public ControlRenderInfo getControlRenderInfo()
     {
         FormGridTag formGrid = getFormGrid();
-        if (formGrid!=null)
-            return formGrid.getControlRenderInfo();
-        else
-            return ControlRenderInfo.DEFAULT_CONTROL_RENDER_INFO;
+        return (formGrid!=null) ? formGrid.getControlRenderInfo() : null;  
     }
 
     /* ********************** label ********************** */

Reply via email to