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 ********************** */