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/13 17:57:00 UTC

svn commit: r954252 - in /myfaces/core/branches/1.2.x/impl/src: main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java

Author: jakobk
Date: Sun Jun 13 15:56:59 2010
New Revision: 954252

URL: http://svn.apache.org/viewvc?rev=954252&view=rev
Log:
MYFACES-2751 escape attribute of h:outputLabel is not picked up by HtmlLabelRenderer (fix + test case; thanks to Rudy De Busscher for the patch and the test case)

Modified:
    myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
    myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java

Modified: myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java?rev=954252&r1=954251&r2=954252&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/main/java/org/apache/myfaces/renderkit/html/HtmlLabelRenderer.java Sun Jun 13 15:56:59 2010
@@ -29,6 +29,7 @@ import javax.faces.context.ResponseWrite
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFRenderer;
+import org.apache.myfaces.shared_impl.component.EscapeCapable;
 import org.apache.myfaces.shared_impl.renderkit.JSFAttr;
 import org.apache.myfaces.shared_impl.renderkit.RendererUtils;
 import org.apache.myfaces.shared_impl.renderkit.html.HTML;
@@ -85,9 +86,26 @@ extends HtmlRenderer
         if (uiComponent instanceof ValueHolder)
         {
             String text = RendererUtils.getStringValue(facesContext, uiComponent);
-            if(text != null)
+            if (text != null)
             {
-                writer.writeText(text, "value");
+                boolean escape;
+                if (uiComponent instanceof HtmlOutputLabel || uiComponent instanceof EscapeCapable)
+                {
+                    escape = ((HtmlOutputLabel)uiComponent).isEscape();
+                }
+                else
+                {
+                    escape = RendererUtils.getBooleanAttribute(uiComponent, org.apache.myfaces.shared_impl.renderkit.JSFAttr.ESCAPE_ATTR,
+                                                               true); //default is to escape
+                }                
+                if (escape)
+                {
+                    writer.writeText(text, org.apache.myfaces.shared_impl.renderkit.JSFAttr.VALUE_ATTR);
+                }
+                else
+                {
+                    writer.write(text);
+                }
             }
         }
 

Modified: myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java?rev=954252&r1=954251&r2=954252&view=diff
==============================================================================
--- myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java (original)
+++ myfaces/core/branches/1.2.x/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java Sun Jun 13 15:56:59 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.myfaces.renderkit.html;
 
+import java.io.IOException;
 import java.io.StringWriter;
 
 import javax.faces.component.html.HtmlOutputLabel;
@@ -41,11 +42,13 @@ public class HtmlLabelRendererTest exten
         super(name);
     }
     
-    public static Test suite() {
+    public static Test suite() 
+    {
         return new TestSuite(HtmlLabelRendererTest.class);
     }
     
-    public void setUp() throws Exception {
+    public void setUp() throws Exception 
+    {
         super.setUp();
         label = new HtmlOutputLabel();
         writer = new MockResponseWriter(new StringWriter(), null, null);
@@ -58,7 +61,8 @@ public class HtmlLabelRendererTest exten
                 new HtmlLabelRenderer());
     }
     
-    public void tearDown() throws Exception {
+    public void tearDown() throws Exception 
+    {
         super.tearDown();
         writer = null;
         label = null;
@@ -66,7 +70,8 @@ public class HtmlLabelRendererTest exten
 
     public void testHtmlPropertyPassTru() throws Exception
     {
-        HtmlRenderedAttr[] attrs = {
+        HtmlRenderedAttr[] attrs = 
+        {
             //_AccesskeyProperty
             new HtmlRenderedAttr("accesskey"),
             //_UniversalProperties
@@ -97,8 +102,44 @@ public class HtmlLabelRendererTest exten
         
         HtmlCheckAttributesUtil.checkRenderedAttributes(
                 label, facesContext, writer, attrs);
-        if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) {
+        if(HtmlCheckAttributesUtil.hasFailedAttrRender(attrs)) 
+        {
             fail(HtmlCheckAttributesUtil.constructErrorMessage(attrs, writer.getWriter().toString()));
         }
     }
+    
+    /**
+     * Gets the page contents.
+     * @return the page contents
+     */
+    protected String getPageContents()
+    {
+        return ((StringWriter) writer.getWriter()).toString();
+    }
+    
+    public void testEscapeUntouched() throws IOException
+    {
+        label.setId("labelId");
+        label.setValue("<span class=\"required\">field label</span>");
+
+        // render label
+        label.encodeAll(facesContext);
+
+        String page = getPageContents();
+        assertEquals("<label id=\"labelId\">&lt;span class=&quot;required&quot;&gt;field label&lt;/span&gt;</label>", page);
+    }
+
+    public void testEscapeSetToFalse() throws IOException
+    {
+        label.setId("labelId");
+        label.setValue("<span class=\"required\">field label</span>");
+        label.setEscape(false);
+
+        // render label
+        label.encodeAll(facesContext);
+
+        String page = getPageContents();
+        assertEquals("<label id=\"labelId\"><span class=\"required\">field label</span></label>", page);
+    }
+    
 }