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);
- }
-
}