You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/06/14 15:40:54 UTC
svn commit: r954464 - in
/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html:
HtmlSecretRendererBase.java HtmlTextRendererBase.java
HtmlTextareaRendererBase.java
Author: jakobk
Date: Mon Jun 14 13:40:54 2010
New Revision: 954464
URL: http://svn.apache.org/viewvc?rev=954464&view=rev
Log:
MYFACES-2746 Subdivide methods of HtmlTextRendererBase, HtmlTextareaRendererBase and HtmlSecretRendererBase into extendable parts (Thanks to Ali Ok for this patch)
Modified:
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java?rev=954464&r1=954463&r2=954464&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java Mon Jun 14 13:40:54 2010
@@ -66,6 +66,18 @@ public class HtmlSecretRendererBase
}
}
+ //allow subclasses to render custom attributes by separating rendering begin and end
+ renderInputBegin(facesContext, uiComponent);
+ renderInputEnd(facesContext, uiComponent);
+ }
+
+
+ //Subclasses can set the value of an attribute before, or can render a custom attribute after calling this method
+ protected void renderInputBegin(FacesContext facesContext,
+ UIComponent uiComponent) throws IOException
+ {
+ ResponseWriter writer = facesContext.getResponseWriter();
+
writer.startElement(HTML.INPUT_ELEM, uiComponent);
writer.writeAttribute(HTML.TYPE_ATTR, org.apache.myfaces.shared.renderkit.html.HTML.INPUT_TYPE_PASSWORD, null);
@@ -98,8 +110,11 @@ public class HtmlSecretRendererBase
writer.writeAttribute(HTML.VALUE_ATTR, strValue, JSFAttr.VALUE_ATTR);
}
+ Map<String, List<ClientBehavior>> behaviors = null;
if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
{
+ behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+
HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
@@ -119,11 +134,15 @@ public class HtmlSecretRendererBase
{
writer.writeAttribute(HTML.AUTOCOMPLETE_ATTR, AUTOCOMPLETE_VALUE_OFF, HTML.AUTOCOMPLETE_ATTR);
}
+ }
+
+ protected void renderInputEnd(FacesContext facesContext, UIComponent uiComponent) throws IOException
+ {
+ ResponseWriter writer = facesContext.getResponseWriter();
writer.endElement(HTML.INPUT_ELEM);
}
-
protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
{
//TODO: overwrite in extended HtmlSecretRenderer and check for enabledOnUserRole
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java?rev=954464&r1=954463&r2=954464&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextRendererBase.java Mon Jun 14 13:40:54 2010
@@ -154,6 +154,15 @@ public class HtmlTextRendererBase
protected void renderInput(FacesContext facesContext, UIComponent component)
throws IOException
{
+ //allow subclasses to render custom attributes by separating rendering begin and end
+ renderInputBegin(facesContext, component);
+ renderInputEnd(facesContext, component);
+ }
+
+ //Subclasses can set the value of an attribute before, or can render a custom attribute after calling this method
+ protected void renderInputBegin(FacesContext facesContext,
+ UIComponent component) throws IOException
+ {
ResponseWriter writer = facesContext.getResponseWriter();
String clientId = component.getClientId(facesContext);
@@ -162,7 +171,11 @@ public class HtmlTextRendererBase
writer.startElement(HTML.INPUT_ELEM, component);
writer.writeAttribute(HTML.ID_ATTR, clientId, null);
writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
- writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_TEXT, null);
+
+ //allow extending classes to modify html input element's type
+ String inputHtmlType = getInputHtmlType(component);
+ writer.writeAttribute(HTML.TYPE_ATTR, inputHtmlType, null);
+
if (value != null)
{
writer.writeAttribute(HTML.VALUE_ATTR, value, JSFAttr.VALUE_ATTR);
@@ -192,6 +205,11 @@ public class HtmlTextRendererBase
{
writer.writeAttribute(HTML.AUTOCOMPLETE_ATTR, AUTOCOMPLETE_VALUE_OFF, HTML.AUTOCOMPLETE_ATTR);
}
+ }
+
+ protected void renderInputEnd(FacesContext facesContext, UIComponent component) throws IOException
+ {
+ ResponseWriter writer = facesContext.getResponseWriter();
writer.endElement(HTML.INPUT_ELEM);
}
@@ -258,4 +276,13 @@ public class HtmlTextRendererBase
submittedValue);
}
+ /**
+ * Returns the HTML type attribute of HTML input element, which is being rendered.
+ */
+ protected String getInputHtmlType(UIComponent component)
+ {
+ //subclasses may act on properties of the component
+ return HTML.INPUT_TYPE_TEXT;
+ }
+
}
Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java?rev=954464&r1=954463&r2=954464&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java Mon Jun 14 13:40:54 2010
@@ -68,6 +68,16 @@ public class HtmlTextareaRendererBase
}
protected void encodeTextArea(FacesContext facesContext, UIComponent uiComponent) throws IOException {
+ //allow subclasses to render custom attributes by separating rendering begin and end
+ renderTextAreaBegin(facesContext, uiComponent);
+ renderTextAreaEnd(facesContext, uiComponent);
+
+ }
+
+ //Subclasses can set the value of an attribute before, or can render a custom attribute after calling this method
+ protected void renderTextAreaBegin(FacesContext facesContext,
+ UIComponent uiComponent) throws IOException
+ {
ResponseWriter writer = facesContext.getResponseWriter();
writer.startElement(HTML.TEXTAREA_ELEM, uiComponent);
@@ -103,10 +113,14 @@ public class HtmlTextareaRendererBase
String strValue = org.apache.myfaces.shared.renderkit.RendererUtils.getStringValue(facesContext, uiComponent);
writer.writeText(strValue, org.apache.myfaces.shared.renderkit.JSFAttr.VALUE_ATTR);
-
- writer.endElement(HTML.TEXTAREA_ELEM);
}
+ protected void renderTextAreaEnd(FacesContext facesContext,
+ UIComponent uiComponent) throws IOException
+ {
+ facesContext.getResponseWriter().endElement(HTML.TEXTAREA_ELEM);
+ }
+
protected boolean isDisabled(FacesContext facesContext, UIComponent uiComponent)
{
//TODO: overwrite in extended HtmlTextareaRenderer and check for enabledOnUserRole