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 2012/07/23 16:25:42 UTC

svn commit: r1364644 - /myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java

Author: lu4242
Date: Mon Jul 23 14:25:41 2012
New Revision: 1364644

URL: http://svn.apache.org/viewvc?rev=1364644&view=rev
Log:
MYFACES-3584 h:commandLink renders onclick JavaScript referencing a non-existent HTML id 

Modified:
    myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java

Modified: myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java?rev=1364644&r1=1364643&r2=1364644&view=diff
==============================================================================
--- myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java (original)
+++ myfaces/core/branches/2.0.x/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlLinkRendererBase.java Mon Jul 23 14:25:41 2012
@@ -314,9 +314,30 @@ public abstract class HtmlLinkRendererBa
                     {
                         HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
                     }
-                    else
+                    else 
                     {
-                        HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                        // If onclick is not null, both onclick and server side script are rendered 
+                        // using jsf.util.chain(...) js function. We need to check that case and force
+                        // id/name rendering. It is possible to do something else in that case and 
+                        // do not render the script using jsf.util.chain, but for now it is ok.
+                        String commandOnclick;
+                        if (component instanceof HtmlCommandLink)
+                        {
+                            commandOnclick = ((HtmlCommandLink)component).getOnclick();
+                        }
+                        else
+                        {
+                            commandOnclick = (String)component.getAttributes().get(HTML.ONCLICK_ATTR);
+                        }
+                        
+                        if (commandOnclick != null)
+                        {
+                            HtmlRendererUtils.writeIdAndName(writer, component, facesContext);
+                        }
+                        else
+                        {
+                            HtmlRendererUtils.writeIdIfNecessary(writer, component, facesContext);
+                        }
                     }
                     long commonPropertiesMarked = 0L;
                     if (isCommonPropertiesOptimizationEnabled(facesContext))