[prev in list] [next in list] [prev in thread] [next in thread]
List: myfaces-dev
Subject: [jira] [Created] (MYFACES-4434) HtmlTextareaRendererBase, separate "begin tag" code from "end tag"
From: "glynn leininiger (Jira)" <dev () myfaces ! apache ! org>
Date: 2022-04-29 17:15:00
Message-ID: JIRA.13442556.1651252493000.51180.1651252500070 () Atlassian ! JIRA
[Download RAW message or body]
glynn leininiger created MYFACES-4434:
-----------------------------------------
Summary: HtmlTextareaRendererBase, separate "begin tag" code from "end \
tag" Key: MYFACES-4434
URL: https://issues.apache.org/jira/browse/MYFACES-4434
Project: MyFaces Core
Issue Type: Improvement
Affects Versions: 2.3.9
Reporter: glynn leininiger
This ticket is very similar to MYFACES-4428 and MYFACES-4430 except it applies to \
HtmlTextareaRendererBase.
As with the others, we're trying to implement a few JSF components that extend from \
the generic JSF components/renderers. This particular component is extending \
javax.faces.component.html.HtmlTextareaRendererBase.
The problem is HtmlTextareaRendererBase does not have an encodeBegin() method, \
instead it does all of the "Start tag" encoding in the encodeEnd() method. This makes \
it impossible to create custom components that wrap the functionality of the default \
render kit.
I propose adding an `encodeBegin()` method that still calls `renderTextAreaBegin()`
```
@Override
public void encodeBegin(FacesContext facesContext, UIComponent uiComponent)
throws IOException
{
RendererUtils.checkParamValidity(facesContext, uiComponent, UIInput.class);
Map<String, List<ClientBehavior>> behaviors = null;
if (uiComponent instanceof ClientBehaviorHolder)
{
behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
if (!behaviors.isEmpty())
{
ResourceUtils.renderDefaultJsfJsInlineIfNecessary(facesContext,
facesContext.getResponseWriter());
}
}
renderTextAreaBegin(facesContext, uiComponent);
}
```
and then leaving `renderTextAreaValue()` and `renderTextAreaEnd()` in the encode end
```
@Override
public void encodeEnd(FacesContext facesContext, UIComponent uiComponent)
throws IOException
{
renderTextAreaValue(facesContext, uiComponent);
renderTextAreaEnd(facesContext, uiComponent);
}
```
These changes will split the logic of encodeBegin and encodeEnd into separate methods \
and allow for the creation of custom components.
Im open to any feedback on this proposed change. Thanks!
h4.
Thanks
--
This message was sent by Atlassian Jira
(v8.20.7#820007)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic