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 da394f5b EMPIREDB-439 ControlTag: placeholder id attribute fix
da394f5b is described below

commit da394f5bad64b2cc5ed651b3da8e98965f4a6bb3
Author: Rainer Döbele <[email protected]>
AuthorDate: Sat Oct 12 15:09:46 2024 +0200

    EMPIREDB-439
    ControlTag: placeholder id attribute fix
---
 .../java/org/apache/empire/jsf2/components/FormGridTag.java    | 10 ++++++++--
 .../main/java/org/apache/empire/jsf2/components/SelectTag.java |  4 ++--
 .../java/org/apache/empire/jsf2/utils/TagEncodingHelper.java   |  6 +++---
 3 files changed, 13 insertions(+), 7 deletions(-)

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 80a014b6..8066383f 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
@@ -112,14 +112,20 @@ public class FormGridTag extends UIOutput // implements 
NamingContainer
             {   // label facet
                 placeholderFacet.encodeAll(context);
             }
-            else if (renderPlaceholder || 
ObjectUtils.getBoolean(controlTag.getAttributes().get("placeholder")))
+            else if (renderPlaceholder || 
ObjectUtils.getBoolean(controlTag.getAttributes().get("placeholder"), false))
             {   // render placeholder   
                 ResponseWriter writer = context.getResponseWriter();
                 String placeholderTag = (CONTROL_TAG!=null ? CONTROL_TAG : 
INPUT_WRAPPER_TAG);
                 writer.startElement(placeholderTag, controlTag);
+                // id attribute
+                if (CONTROL_TAG!=null && 
TagEncodingHelper.hasComponentId(controlTag))
+                    writer.writeAttribute(InputControl.HTML_ATTR_ID, 
controlTag.getClientId(), null);
+                // Style class
                 writer.writeAttribute(InputControl.HTML_ATTR_CLASS, 
TagStyleClass.CONTROL_PLACEHOLDER.get(), null);
-                if (InputControl.HTML_TAG_TD.equalsIgnoreCase(placeholderTag))
+                // Legacy two <td>
+                if (CONTROL_TAG==null && 
InputControl.HTML_TAG_TD.equalsIgnoreCase(placeholderTag))
                     writer.writeAttribute("colspan", 2, null);
+                // done
                 writer.endElement(placeholderTag);
             }
         }
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
index 237cc4ba..8bf76e7e 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
@@ -408,9 +408,9 @@ public class SelectTag extends UIInput implements 
NamingContainer
     protected void copyAttributes(UISelectOne input)
     {
         // set id
-        String inputId = this.getId();
-        if (TagEncodingHelper.hasComponentId(inputId))
+        if (TagEncodingHelper.hasComponentId(this))
         {   // remove trailing underscore (workaround since parent and child 
may not have the same name)
+            String inputId = this.getId();
             if (inputId.endsWith("_"))
             {
                 inputId = inputId.substring(0, inputId.length() - 1);
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 2f9df6d7..089ad80d 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
@@ -1547,12 +1547,12 @@ public class TagEncodingHelper implements 
NamingContainer
     
     public boolean hasComponentId()
     {
-        String id = component.getId();
-        return (id!=null && id.length()>0 && !id.startsWith(FACES_ID_PREFIX)); 
       
+        return hasComponentId(this.component);        
     }
     
-    public static boolean hasComponentId(String id)
+    public static boolean hasComponentId(UIComponent component)
     {
+        String id = component.getId();
         return (id!=null && id.length()>0 && !id.startsWith(FACES_ID_PREFIX)); 
       
     }
 

Reply via email to