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())