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 2008/08/11 22:59:27 UTC

svn commit: r684924 - in /myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared: renderkit/ renderkit/html/ taglib/core/

Author: lu4242
Date: Mon Aug 11 13:59:26 2008
New Revision: 684924

URL: http://svn.apache.org/viewvc?rev=684924&view=rev
Log:
MYFACES-1897 escape value of a selectItem is never evaluated

Modified:
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
    myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java?rev=684924&r1=684923&r2=684924&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/JSFAttr.java Mon Aug 11 13:59:26 2008
@@ -118,6 +118,7 @@
     String ITEM_DESCRIPTION_ATTR       = "itemDescription";
     String ITEM_LABEL_ATTR             = "itemLabel";
     String ITEM_VALUE_ATTR             = "itemValue";
+    String ITEM_ESCAPED_ATTR           = "itemEscaped";
 
     // UIData attributes
     String ROWS_ATTR                   = "rows";

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java?rev=684924&r1=684923&r2=684924&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java Mon Aug 11 13:59:26 2008
@@ -208,7 +208,7 @@
             boolean componentDisabled = isDisabled(facesContext, selectMany);
             boolean itemDisabled = (componentDisabled || disabled);
 
-            HtmlRendererUtils.renderLabel(writer, selectMany, itemId, selectItem.getLabel(), itemDisabled);
+            HtmlRendererUtils.renderLabel(writer, selectMany, itemId, selectItem, itemDisabled);
 
             writer.endElement(HTML.TD_ELEM);
             if (pageDirectionLayout)

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java?rev=684924&r1=684923&r2=684924&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java Mon Aug 11 13:59:26 2008
@@ -197,7 +197,7 @@
         boolean componentDisabled = isDisabled(facesContext, selectOne);
         boolean disabled = (componentDisabled || itemDisabled);
 
-        HtmlRendererUtils.renderLabel(writer, selectOne, itemId, selectItem.getLabel(), disabled);
+        HtmlRendererUtils.renderLabel(writer, selectOne, itemId, selectItem, disabled);
 
         writer.endElement(HTML.TD_ELEM);
         if (pageDirectionLayout)

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?rev=684924&r1=684923&r2=684924&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Mon Aug 11 13:59:26 2008
@@ -472,19 +472,38 @@
                 if (component instanceof EscapeCapable)
                 {
                     escape = ((EscapeCapable)component).isEscape();
+                    
+                    // Preserve tomahawk semantic. If escape=false
+                    // all items should be non escaped. If escape
+                    // is true check if selectItem.isEscape() is
+                    // true and do it.
+                    // This is done for remain compatibility.
+                    if (escape && selectItem.isEscape())
+                    {
+                        writer.writeText(selectItem.getLabel(), null);
+                    } else
+                    {
+                        writer.write(selectItem.getLabel());
+                    }
                 }
                 else
                 {
                     escape = RendererUtils.getBooleanAttribute(component, JSFAttr.ESCAPE_ATTR,
-                                                               true); //default is to escape
-                }
-
-                if (escape || selectItem.isEscape())
-                {
-                    writer.writeText(selectItem.getLabel(), null);
-                } else
-                {
-                    writer.write(selectItem.getLabel());
+                                                               false);
+                    //default is to escape
+                    //In JSF 1.2, when a SelectItem is created by default 
+                    //selectItem.isEscape() returns true (this property
+                    //is not available on JSF 1.1).
+                    //so, if we found a escape property on the component
+                    //set to true, escape every item, but if not
+                    //check if isEscape() = true first.
+                    if (escape || selectItem.isEscape())
+                    {
+                        writer.writeText(selectItem.getLabel(), null);
+                    } else
+                    {
+                        writer.write(selectItem.getLabel());
+                    }
                 }
 
                 writer.endElement(HTML.OPTION_ELEM);
@@ -1347,8 +1366,15 @@
     }
 
     /**
+     * @deprecated Replaced by 
+     * renderLabel(ResponseWriter writer,
+                                   UIComponent component,
+                                   String forClientId,
+                                   SelectItem item,
+                                   boolean disabled).
      * Renders a label HTML element
      */
+    @Deprecated
     public static void renderLabel(ResponseWriter writer,
                                    UIComponent component,
                                    String forClientId,
@@ -1381,6 +1407,49 @@
 
             writer.endElement(HTML.LABEL_ELEM);
     }
+    
+    /**
+     * Renders a label HTML element
+     */
+    public static void renderLabel(ResponseWriter writer,
+                                   UIComponent component,
+                                   String forClientId,
+                                   SelectItem item,
+                                   boolean disabled) throws IOException
+    {
+            writer.startElement(HTML.LABEL_ELEM, component);
+            writer.writeAttribute(HTML.FOR_ATTR, forClientId, null);
+
+            String labelClass = null;
+
+            if (disabled)
+            {
+                labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
+            }
+            else
+            {
+                labelClass = (String) component.getAttributes().get(org.apache.myfaces.shared.renderkit.JSFAttr.ENABLED_CLASS_ATTR);
+            }
+            if (labelClass != null)
+            {
+                writer.writeAttribute("class", labelClass, "labelClass");
+            }
+
+            if ((item.getLabel() != null) && (item.getLabel().length() > 0))
+            {
+                writer.write(HTML.NBSP_ENTITY);
+                if(item.isEscape())
+                {
+                    writer.writeText(item.getLabel(), null);
+                }
+                else
+                {
+                    writer.write(item.getLabel());
+                }
+            }
+
+            writer.endElement(HTML.LABEL_ELEM);
+    }
 
     /**
      * Render the javascript function that is called on a click on a commandLink

Modified: myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java?rev=684924&r1=684923&r2=684924&view=diff
==============================================================================
--- myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java (original)
+++ myfaces/shared/trunk_3.0.x/core/src/main/java/org/apache/myfaces/shared/taglib/core/SelectItemTagBase.java Mon Aug 11 13:59:26 2008
@@ -57,7 +57,7 @@
         setStringProperty(component, JSFAttr.ITEM_DESCRIPTION_ATTR, _itemDescription);
         setStringProperty(component, org.apache.myfaces.shared.renderkit.JSFAttr.ITEM_LABEL_ATTR, _itemLabel);
         setStringProperty(component, JSFAttr.ITEM_VALUE_ATTR, _itemValue);
-        setBooleanProperty(component, JSFAttr.ESCAPE_ATTR, _escape, Boolean.TRUE);
+        setBooleanProperty(component, JSFAttr.ITEM_ESCAPED_ATTR, _escape, Boolean.TRUE);
     }
 
     public void setItemDisabled(ValueExpression itemDisabled)