You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2009/09/29 00:45:54 UTC

svn commit: r819760 - /myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/

Author: lu4242
Date: Mon Sep 28 22:45:53 2009
New Revision: 819760

URL: http://svn.apache.org/viewvc?rev=819760&view=rev
Log:
MYFACES-2323 Implement <f:ajax> tag handler (Components that renders client behaviors should always render "id" and "name" attribute) (Thanks to Jakob Korherr for provide this patch).

Modified:
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
    myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java Mon Sep 28 22:45:53 2009
@@ -95,6 +95,7 @@
         writer.startElement(HTML.TABLE_ELEM, selectMany);
         HtmlRendererUtils.renderHTMLAttributes(writer, selectMany,
                 HTML.SELECT_TABLE_PASSTHROUGH_ATTRIBUTES);
+        
         HtmlRendererUtils.writeIdIfNecessary(writer, selectMany, facesContext);
 
         if (!pageDirectionLayout)
@@ -246,13 +247,13 @@
         {
             writer.writeAttribute(HTML.ID_ATTR, itemId, null);
         }
+        else if (renderId) 
+        {
+            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        }
         writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_CHECKBOX, null);
         writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
         
-        if (renderId) {
-            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
-        }
-
         if (checked) {
             writer.writeAttribute(HTML.CHECKED_ATTR, org.apache.myfaces.shared.renderkit.html.HTML.CHECKED_ATTR, null);
         }

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java Mon Sep 28 22:45:53 2009
@@ -97,17 +97,25 @@
 
         ResponseWriter writer = facesContext.getResponseWriter();
         writer.startElement(HTML.TABLE_ELEM, component);
-        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
         
         Map<String, List<ClientBehavior>> behaviors = null;
         if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
         {
             behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+            }
             HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
             HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
         }
         else
         {
+            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
             HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.TABLE_PASSTHROUGH_ATTRIBUTES);
         }
 

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlImageRendererBase.java Mon Sep 28 22:45:53 2009
@@ -66,7 +66,16 @@
 
         writer.startElement(HTML.IMG_ELEM, uiComponent);
 
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        if (uiComponent instanceof ClientBehaviorHolder 
+                && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
+                && !((ClientBehaviorHolder) uiComponent).getClientBehaviors().isEmpty())
+        {
+            HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        }
 
         if (url != null && url.length() > 0)
         {

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Mon Sep 28 22:45:53 2009
@@ -198,16 +198,24 @@
         if (HtmlRendererUtils.isDisabled(component))
         {
             writer.startElement(HTML.SPAN_ELEM, component);
-            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
             if (component instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
             {
                 behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                }
                 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, component, behaviors);
                 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, component, behaviors);
                 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
             }
             else
             {
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
                 HtmlRendererUtils.renderHTMLAttributes(writer, component, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
             }
         }
@@ -220,6 +228,14 @@
                 {
                     behaviors = ((ClientBehaviorHolder) component).getClientBehaviors();
                     renderBehaviorizedJavaScriptAnchorStart(facesContext, writer, component, clientId, behaviors);
+                    if (!behaviors.isEmpty())
+                    {
+                        HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+                    }
+                    else
+                    {
+                        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                    }
                     HtmlRendererUtils.renderBehaviorizedEventHandlersWithoutOnclick(facesContext, writer, component, behaviors);
                     HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, component, behaviors);
                     anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE_AND_EVENTS;
@@ -227,16 +243,17 @@
                 else
                 {
                     renderJavaScriptAnchorStart(facesContext, writer, component, clientId);
+                    HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
                     anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_ONCLICK_WITHOUT_STYLE;
                 }
             }
             else
             {
                 renderNonJavaScriptAnchorStart(facesContext, writer, component, clientId);
+                HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
                 anchorAttrsToRender = HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_STYLE;
             }
 
-            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
             HtmlRendererUtils.renderHTMLAttributes(writer, component,
                                                    anchorAttrsToRender);
             HtmlRendererUtils.renderHTMLAttribute(writer, HTML.STYLE_ATTR, HTML.STYLE_ATTR,
@@ -590,21 +607,29 @@
         if (HtmlRendererUtils.isDisabled(output))
         {
             writer.startElement(HTML.SPAN_ELEM, output);
-            HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
             if (output instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
             {
                 behaviors = ((ClientBehaviorHolder) output).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, output, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
+                }
                 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
             }
             else
             {
+                HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
             }
         }
         else
-        {
+        { 
             //calculate href
             String href = org.apache.myfaces.shared.renderkit.RendererUtils.getStringValue(facesContext, output);
             
@@ -633,17 +658,25 @@
 
             //write anchor
             writer.startElement(HTML.ANCHOR_ELEM, output);
-            HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
             writer.writeURIAttribute(HTML.HREF_ATTR, href, null);
             if (output instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
             {
                 behaviors = ((ClientBehaviorHolder) output).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, output, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
+                }
                 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
             }
             else
             {
+                HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
             }
             writer.flush();
@@ -658,16 +691,24 @@
         if (HtmlRendererUtils.isDisabled(output))
         {
             writer.startElement(HTML.SPAN_ELEM, output);
-            HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
             if (output instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
             {
                 behaviors = ((ClientBehaviorHolder) output).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, output, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
+                }
                 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
             }
             else
             {
+                HtmlRendererUtils.writeIdIfNecessary(writer, output, facesContext);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
             }
         }
@@ -679,17 +720,25 @@
 
             //write anchor
             writer.startElement(HTML.ANCHOR_ELEM, output);
-            HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
             writer.writeURIAttribute(HTML.HREF_ATTR, href, null);
             if (output instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
             {
                 behaviors = ((ClientBehaviorHolder) output).getClientBehaviors();
+                if (!behaviors.isEmpty())
+                {
+                    HtmlRendererUtils.writeIdAndName(writer, output, facesContext);
+                }
+                else
+                {
+                    HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
+                }
                 HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchangeAndOnselect(facesContext, writer, output, behaviors);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
             }
             else
             {
+                HtmlRendererUtils.writeIdAndNameIfNecessary(writer, output, facesContext);
                 HtmlRendererUtils.renderHTMLAttributes(writer, output, HTML.ANCHOR_PASSTHROUGH_ATTRIBUTES);
             }
             writer.flush();

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java Mon Sep 28 22:45:53 2009
@@ -82,7 +82,7 @@
         writer.startElement(HTML.TABLE_ELEM, selectOne);
         HtmlRendererUtils.renderHTMLAttributes(writer, selectOne,
                                                HTML.SELECT_TABLE_PASSTHROUGH_ATTRIBUTES);
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext); 
 
         if (!pageDirectionLayout) writer.startElement(HTML.TR_ELEM, selectOne);
 
@@ -246,6 +246,9 @@
         {
             writer.writeAttribute(HTML.ID_ATTR, itemId, null);
         }
+        else if (renderId) {
+            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        }
         writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_RADIO, null);
         writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
 
@@ -253,10 +256,6 @@
             writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null);
         }
 
-        if (renderId) {
-            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
-        }
-
         if (checked)
         {
             writer.writeAttribute(HTML.CHECKED_ATTR, HTML.CHECKED_ATTR, null);

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Mon Sep 28 22:45:53 2009
@@ -374,9 +374,19 @@
         ResponseWriter writer = facesContext.getResponseWriter();
 
         writer.startElement(HTML.SELECT_ELEM, uiComponent);
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
-        writer.writeAttribute(HTML.NAME_ATTR, uiComponent
-                .getClientId(facesContext), null);
+        if (uiComponent instanceof ClientBehaviorHolder 
+                && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
+                && !((ClientBehaviorHolder) uiComponent).getClientBehaviors().isEmpty())
+        {
+            writer.writeAttribute(HTML.ID_ATTR, 
+                                  uiComponent.getClientId(facesContext), null);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        }
+        writer.writeAttribute(HTML.NAME_ATTR,
+                              uiComponent.getClientId(facesContext), null);
 
         List selectItemList;
         Converter converter;
@@ -402,7 +412,6 @@
         if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
         {
             behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
-            
             renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
             renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
             renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
@@ -764,6 +773,15 @@
             writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
         }
     }
+    
+    public static void writeIdAndName(ResponseWriter writer, UIComponent component,
+                                      FacesContext facesContext)
+            throws IOException 
+    {
+        String clientId = component.getClientId(facesContext);
+        writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+    }
 
     public static void renderDisplayValueOnlyForSelects(FacesContext facesContext, UIComponent
             uiComponent)

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java Mon Sep 28 22:45:53 2009
@@ -57,10 +57,19 @@
         writer.startElement(HTML.INPUT_ELEM, uiComponent);
         writer.writeAttribute(HTML.TYPE_ATTR, org.apache.myfaces.shared.renderkit.html.HTML.INPUT_TYPE_PASSWORD, null);
 
-        String clientId = uiComponent.getClientId(facesContext);
-
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
-        writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
+        if (uiComponent instanceof ClientBehaviorHolder 
+                && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext())
+                && !((ClientBehaviorHolder) uiComponent).getClientBehaviors().isEmpty())
+        {
+            writer.writeAttribute(HTML.ID_ATTR, 
+                                  uiComponent.getClientId(facesContext), null);
+        }
+        else
+        {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+        }
+        writer.writeAttribute(HTML.NAME_ATTR,
+                              uiComponent.getClientId(facesContext), null);
 
         boolean isRedisplay;
         if (uiComponent instanceof HtmlInputSecret)

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java Mon Sep 28 22:45:53 2009
@@ -125,17 +125,25 @@
         ResponseWriter writer = facesContext.getResponseWriter();
         HtmlRendererUtils.writePrettyLineSeparator(facesContext);
         writer.startElement(HTML.TABLE_ELEM, uiComponent);
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
         
         Map<String, List<ClientBehavior>> behaviors = null;
         if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
         {
             behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
+            if (!behaviors.isEmpty())
+            {
+                HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+            }
             HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
             HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.TABLE_PASSTHROUGH_ATTRIBUTES_WITHOUT_EVENTS);
         }
         else
         {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
             HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.TABLE_PASSTHROUGH_ATTRIBUTES);
         }
     }

Modified: myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java?rev=819760&r1=819759&r2=819760&view=diff
==============================================================================
--- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java (original)
+++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlTextareaRendererBase.java Mon Sep 28 22:45:53 2009
@@ -60,15 +60,19 @@
         ResponseWriter writer = facesContext.getResponseWriter();
         writer.startElement(HTML.TEXTAREA_ELEM, uiComponent);
 
-        String clientId = uiComponent.getClientId(facesContext);
-        writer.writeAttribute(HTML.NAME_ATTR, clientId, null);
-        HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
-
         Map<String, List<ClientBehavior>> behaviors = null;
         if (uiComponent instanceof ClientBehaviorHolder && JavascriptUtils.isJavascriptAllowed(facesContext.getExternalContext()))
         {
             behaviors = ((ClientBehaviorHolder) uiComponent).getClientBehaviors();
-            
+            if (!behaviors.isEmpty())
+            {
+                HtmlRendererUtils.writeIdAndName(writer, uiComponent, facesContext);
+            }
+            else
+            {
+                HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+                writer.writeAttribute(HTML.NAME_ATTR, uiComponent.getClientId(facesContext), null);
+            }
             HtmlRendererUtils.renderBehaviorizedOnchangeEventHandler(facesContext, writer, uiComponent, behaviors);
             HtmlRendererUtils.renderBehaviorizedEventHandlers(facesContext, writer, uiComponent, behaviors);
             HtmlRendererUtils.renderBehaviorizedFieldEventHandlersWithoutOnchange(facesContext, writer, uiComponent, behaviors);
@@ -76,6 +80,8 @@
         }
         else
         {
+            HtmlRendererUtils.writeIdIfNecessary(writer, uiComponent, facesContext);
+            writer.writeAttribute(HTML.NAME_ATTR, uiComponent.getClientId(facesContext), null);
             HtmlRendererUtils.renderHTMLAttributes(writer, uiComponent, HTML.TEXTAREA_PASSTHROUGH_ATTRIBUTES_WITHOUT_DISABLED);
         }