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 5c31e5b6 EMPIREDB-439: ControlTag: Input wrapper acts as wrapper tag 
(no double wrapper)
5c31e5b6 is described below

commit 5c31e5b6b3aad089a205abab8cf03de76ffd0efe
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Oct 18 10:46:21 2024 +0200

    EMPIREDB-439:
    ControlTag: Input wrapper acts as wrapper tag (no double wrapper)
---
 .../apache/empire/jsf2/components/ControlTag.java  | 31 +++++++++++++---------
 .../apache/empire/jsf2/components/InputTag.java    |  2 +-
 .../empire/jsf2/utils/ControlRenderInfo.java       | 12 ++++++---
 .../empire/jsf2/utils/TagEncodingHelper.java       | 20 +++++++-------
 4 files changed, 39 insertions(+), 26 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 58f2e86f..3b60a1b0 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
@@ -172,7 +172,7 @@ public class ControlTag extends UIInput implements 
NamingContainer
             throws IOException
         {
             // encode input components
-            control.renderInput(context, this);
+            control.renderInput(context, this, (this.tagName==null));
             // don't call super.encodeChildren()!
         }
     }
@@ -618,19 +618,26 @@ public class ControlTag extends UIInput implements 
NamingContainer
         }
     }
     
-    public void renderInput(FacesContext context, UIComponent parent)
+    public void renderInput(FacesContext context, UIComponent parent, boolean 
allowWrapper)
         throws IOException
     {
-        boolean renderValue = helper.isRenderValueComponent();
-        // wrapperTag
-        String wrapperTag = helper.writeWrapperTag(context, false, 
renderValue); 
-        // render
-        control.renderInput(parent, inpInfo, context);
-        // wrapperTagEnd
-        if (wrapperTag!=null)
-        {   // control wrapper tag
-            ResponseWriter writer = context.getResponseWriter();
-            writer.endElement(wrapperTag);
+        if (allowWrapper)
+        {   // render separate wrapper tag
+            boolean renderValue = helper.isRenderValueComponent();
+            // wrapperTag
+            String wrapperTag = helper.writeWrapperTag(context, false, 
renderValue); 
+            // render
+            control.renderInput(parent, inpInfo, context);
+            // wrapperTagEnd
+            if (wrapperTag!=null)
+            {   // control wrapper tag
+                ResponseWriter writer = context.getResponseWriter();
+                writer.endElement(wrapperTag);
+            }
+        }
+        else
+        {   // the InputSeparatorComponent acts as wrapper
+            control.renderInput(parent, inpInfo, context);
         }
     }
 
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 3dde7482..20e481f4 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
@@ -173,7 +173,7 @@ public class InputTag extends UIInput implements 
NamingContainer
         // Render when visible
         if (controlVisible)
         {   // Render now
-            String wrapperTag = helper.writeWrapperTag(context, true, 
renderValue);
+            String wrapperTag = helper.writeWrapperTag(context, 
helper.hasComponentId(), renderValue);
             // render components
             if (renderValue)
             {   // render value
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
index 7bda704b..20bf7f9e 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
@@ -127,11 +127,15 @@ public class ControlRenderInfo
     public void writeInputWrapperAttributes(ResponseWriter writer, 
TagEncodingHelper helper)
         throws IOException
     {
-        // style Class
+        // wrapper Class
+        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass"); 
+        if (wrapperClass!=null && wrapperClass.equals("-"))
+            wrapperClass= null;
+        // extra
         String extraStyleClass = helper.getControlExtraInputWrapperStyle();
-        helper.writeStyleClass(writer, TagStyleClass.CONTROL_INPUT.get(), 
extraStyleClass);
-        // colspan
-        String colSpan = 
INPUT_WRAPPER_TAG.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan") : null;            
+        helper.writeStyleClass(writer, TagStyleClass.CONTROL_INPUT.get(), 
wrapperClass, extraStyleClass);
+        // colspan for <td>
+        String colSpan = 
InputControl.HTML_TAG_TD.equalsIgnoreCase(INPUT_WRAPPER_TAG) ? 
helper.getTagAttributeStringEx("colspan") : null;            
         if (colSpan!=null)
             writer.writeAttribute("colspan", colSpan, null);
     }
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 d0528e53..03a06d84 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
@@ -2092,11 +2092,20 @@ public class TagEncodingHelper implements 
NamingContainer
         writeStyleClass(writer, this.cssStyleClass, userStyle);
     }
     
+    /**
+     * Writes a wrapper tag for <e:value> and <e:input>
+     * Hint: For <e:control> the input separater tag acts as the wrapper
+     * @param context the faces context
+     * @param renderId flag whether or not to render the components client id
+     * @param renderValue flag whether to render and input wrapper (false) or 
a value wrapper (true)
+     * @return the tag name of the wrapper tag
+     * @throws IOException
+     */
     public String writeWrapperTag(FacesContext context, boolean renderId, 
boolean renderValue)
         throws IOException
     {
         String wrapperClass = getTagAttributeStringEx("wrapperClass"); 
-        if (wrapperClass==null)
+        if (wrapperClass==null || wrapperClass.equals("-"))
             return null;
         // start element
         String tagName = InputControl.HTML_TAG_DIV;
@@ -2107,16 +2116,9 @@ public class TagEncodingHelper implements NamingContainer
             writeComponentId(writer);
         // style class
         String contextClass = (renderValue ? TagStyleClass.VALUE_WRAPPER.get() 
: TagStyleClass.INPUT_WRAPPER.get());
-        writeStyleClass(writer, contextClass, nullIf(wrapperClass, '-'));
+        writeStyleClass(writer, contextClass, wrapperClass);
         // return tagName
         return tagName;
     }
     
-    /* ********************** Miscellaneous ********************** */
-
-    protected String nullIf(String value, char nullChar)
-    {
-        return (value==null || value.length()==0 || (value.length()==1 && 
value.charAt(0)==nullChar) ? null : value);   
-    }
-    
 }

Reply via email to