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 00b7ea7c EMPIREDB-476 ControlTag / InputTag: allow override of 
autoControlId
00b7ea7c is described below

commit 00b7ea7c1a0a62134474e127b6f977bb17ca9961
Author: Rainer Döbele <doeb...@apache.org>
AuthorDate: Thu Sep 18 09:19:25 2025 +0200

    EMPIREDB-476
    ControlTag / InputTag: allow override of autoControlId
---
 .../apache/empire/jakarta/components/ControlTag.java   | 11 ++++-------
 .../apache/empire/jakarta/components/FormGridTag.java  |  2 +-
 .../org/apache/empire/jakarta/components/InputTag.java | 12 ++++--------
 .../apache/empire/jakarta/utils/TagEncodingHelper.java | 16 ++++++++++++++++
 .../org/apache/empire/jsf2/components/ControlTag.java  | 11 ++++-------
 .../org/apache/empire/jsf2/components/FormGridTag.java |  2 +-
 .../org/apache/empire/jsf2/components/InputTag.java    | 12 ++++--------
 .../apache/empire/jsf2/utils/TagEncodingHelper.java    | 18 +++++++++++++++++-
 8 files changed, 51 insertions(+), 33 deletions(-)

diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
index 003a1308..65e88d06 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
@@ -323,14 +323,11 @@ public class ControlTag extends UIInput implements 
NamingContainer, TagEncodingH
         // check whether already set
         if (helper.hasComponentId())
             return;
-        /*
-         * 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) {
+        // set autoId
+        String autoId = helper.getAutoControlId();
+        if (autoId!=null) {
             // Auto set component Id
-            setId(this.renderInfo.AUTO_CONTROL_ID.toString());
+            setId(autoId);
             log.debug("Auto-Setting compontent id for Control to {}", 
this.getId());
         }
     }
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
index 2df24105..c0dae73e 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
@@ -205,7 +205,7 @@ public class FormGridTag extends UIOutput implements 
TagEncodingHolder
             this.mode = 
FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
         // autoControlId
         Character autoControlId = null;
-        Object autoId = helper.getTagAttributeString("autoControlId");
+        Object autoId = helper.getTagAttributeValue("autoControlId");
         if (autoId!=null)
         {   // check
             String id = autoId.toString();
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/InputTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/InputTag.java
index a805e036..f104301f 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/InputTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/InputTag.java
@@ -23,7 +23,6 @@ import java.util.List;
 
 import org.apache.empire.data.Column;
 import org.apache.empire.jakarta.controls.InputControl;
-import org.apache.empire.jakarta.utils.ControlRenderInfo;
 import org.apache.empire.jakarta.utils.StyleClass;
 import org.apache.empire.jakarta.utils.TagEncodingHelper;
 import org.apache.empire.jakarta.utils.TagEncodingHelperFactory;
@@ -250,14 +249,11 @@ public class InputTag extends UIInput implements 
NamingContainer, TagEncodingHol
         // check whether already set
         if (helper.hasComponentId())
             return;
-        /*
-         * 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.
-         */
-        ControlRenderInfo renderInfo = helper.getControlRenderInfo();
-        if (renderInfo!=null && renderInfo.AUTO_CONTROL_ID!=null) {
+        // set autoId
+        String autoId = helper.getAutoControlId();
+        if (autoId!=null) {
             // Auto set component Id
-            setId(renderInfo.AUTO_CONTROL_ID.toString());
+            setId(autoId);
             log.debug("Auto-Setting compontent id for Input to {}", 
this.getId());
         }
     }
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
index f765dbdf..93e5f91e 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
@@ -1650,6 +1650,22 @@ public class TagEncodingHelper implements NamingContainer
         return (formGrid!=null) ? formGrid.getControlRenderInfo() : null;  
     }
     
+    public String getAutoControlId()
+    {
+        /*
+         * Attention: renderInfo may only be valid if FormGrid is a direct 
parent of the Control.
+         * If another component is between the Control and the FormGrid, then 
the "autoControlId" attribute must be set directly on the parent
+         */
+        ControlRenderInfo renderInfo = getControlRenderInfo();
+        if (renderInfo==null)
+            return null;
+        // check AUTO_CONTROL_ID
+        if (renderInfo.AUTO_CONTROL_ID==null)
+            return null;
+        // use AUTO_CONTROL_ID placeholder (*,$,@) 
+        return renderInfo.AUTO_CONTROL_ID.toString();
+    }
+    
     public String getControlExtraLabelWrapperStyle()
     {
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())
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 23f1e6e9..f5d790ee 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
@@ -323,14 +323,11 @@ public class ControlTag extends UIInput implements 
NamingContainer, TagEncodingH
         // check whether already set
         if (helper.hasComponentId())
             return;
-        /*
-         * 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) {
+        // set autoId
+        String autoId = helper.getAutoControlId();
+        if (autoId!=null) {
             // Auto set component Id
-            setId(this.renderInfo.AUTO_CONTROL_ID.toString());
+            setId(autoId);
             log.debug("Auto-Setting compontent id for Control to {}", 
this.getId());
         }
     }
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
index e52d2e67..536e0a5a 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
@@ -205,7 +205,7 @@ public class FormGridTag extends UIOutput implements 
TagEncodingHolder
             this.mode = 
FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
         // autoControlId
         Character autoControlId = null;
-        Object autoId = helper.getTagAttributeString("autoControlId");
+        Object autoId = helper.getTagAttributeValue("autoControlId");
         if (autoId!=null)
         {   // check
             String id = autoId.toString();
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
index 75af3264..03c0093b 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
@@ -34,7 +34,6 @@ import javax.faces.view.AttachedObjectHandler;
 
 import org.apache.empire.data.Column;
 import org.apache.empire.jsf2.controls.InputControl;
-import org.apache.empire.jsf2.utils.ControlRenderInfo;
 import org.apache.empire.jsf2.utils.StyleClass;
 import org.apache.empire.jsf2.utils.TagEncodingHelper;
 import org.apache.empire.jsf2.utils.TagEncodingHelperFactory;
@@ -250,14 +249,11 @@ public class InputTag extends UIInput implements 
NamingContainer, TagEncodingHol
         // check whether already set
         if (helper.hasComponentId())
             return;
-        /*
-         * 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.
-         */
-        ControlRenderInfo renderInfo = helper.getControlRenderInfo();
-        if (renderInfo!=null && renderInfo.AUTO_CONTROL_ID!=null) {
+        // set autoId
+        String autoId = helper.getAutoControlId();
+        if (autoId!=null) {
             // Auto set component Id
-            setId(renderInfo.AUTO_CONTROL_ID.toString());
+            setId(autoId);
             log.debug("Auto-Setting compontent id for Input to {}", 
this.getId());
         }
     }
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 1c594fda..d019932b 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
@@ -461,7 +461,7 @@ public class TagEncodingHelper implements NamingContainer
     protected TagEncodingHelper(UIOutput component, String cssStyleClass)
     {
         this.component = component;
-        this.cssStyleClass = cssStyleClass;        
+        this.cssStyleClass = cssStyleClass;
     }
 
     /**
@@ -1650,6 +1650,22 @@ public class TagEncodingHelper implements NamingContainer
         return (formGrid!=null) ? formGrid.getControlRenderInfo() : null;  
     }
     
+    public String getAutoControlId()
+    {
+        /*
+         * Attention: renderInfo may only be valid if FormGrid is a direct 
parent of the Control.
+         * If another component is between the Control and the FormGrid, then 
the "autoControlId" attribute must be set directly on the parent
+         */
+        ControlRenderInfo renderInfo = getControlRenderInfo();
+        if (renderInfo==null)
+            return null;
+        // check AUTO_CONTROL_ID
+        if (renderInfo.AUTO_CONTROL_ID==null)
+            return null;
+        // use AUTO_CONTROL_ID placeholder (*,$,@) 
+        return renderInfo.AUTO_CONTROL_ID.toString();
+    }
+    
     public String getControlExtraLabelWrapperStyle()
     {
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())

Reply via email to