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/05/18 18:12:06 UTC

svn commit: r945729 - in /myfaces: core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/ shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/

Author: jakobk
Date: Tue May 18 16:12:06 2010
New Revision: 945729

URL: http://svn.apache.org/viewvc?rev=945729&view=rev
Log:
MYFACES-2725 OutcomeTarget button and link do not render fragment

Modified:
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
    myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java?rev=945729&r1=945728&r2=945729&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLinkRendererTest.java Tue May 18 16:12:06 2010
@@ -315,6 +315,26 @@ public class HtmlLinkRendererTest extend
     }
     
     /**
+     * Tests if the fragment attribute is correctly rendered.
+     * @throws Exception
+     */
+    public void testOutcomeTargetLinkFragment() throws Exception
+    {
+        // configure the link
+        final String fragment = "end";
+        outcomeTargetLink.getAttributes().put("fragment", fragment);
+        outcomeTargetLink.getAttributes().put("outcome", 
+                "test.xhtml?param1=value1");
+        
+        // render the link
+        outcomeTargetLink.encodeAll(facesContext);
+        String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+        
+        // make sure the fragment is rendered
+        assertTrue(output.contains("param1=value1#" + fragment));
+    }
+    
+    /**
      * Test for the right use of the fragment attribute.
      * The value of the fragment attribute is appended to the end of target URL following a hash (#) mark.
      * @throws Exception

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java?rev=945729&r1=945728&r2=945729&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlOutcomeTargetButtonRendererTest.java Tue May 18 16:12:06 2010
@@ -122,4 +122,24 @@ public class HtmlOutcomeTargetButtonRend
         assertTrue(output.contains("param2=value2"));
     }
     
+    /**
+     * Tests if the fragment attribute is correctly rendered.
+     * @throws Exception
+     */
+    public void testFragment() throws Exception
+    {
+        // configure the button
+        final String fragment = "end";
+        outcomeTargetButton.getAttributes().put("fragment", fragment);
+        outcomeTargetButton.getAttributes().put("outcome", 
+                "test.xhtml?param1=value1");
+        
+        // render the button
+        outcomeTargetButton.encodeAll(facesContext);
+        String output = ((StringWriter) writer.getWriter()).getBuffer().toString();
+        
+        // make sure the fragment is rendered
+        assertTrue(output.contains("param1=value1#" + fragment));
+    }
+    
 }

Modified: myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
URL: http://svn.apache.org/viewvc/myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java?rev=945729&r1=945728&r2=945729&view=diff
==============================================================================
--- myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java (original)
+++ myfaces/shared/trunk/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java Tue May 18 16:12:06 2010
@@ -1842,19 +1842,6 @@ public final class HtmlRendererUtils {
         {
             return null;
         }
-        String href = navigationCase.getToViewId(facesContext);
-        
-        // handle fragment (viewId#fragment)
-        String fragment = (String) component.getAttributes().get ("fragment");
-        if (fragment != null)
-        {
-            fragment = fragment.trim();
-            
-            if (fragment.length() > 0)
-            {
-                href += "#" + fragment;
-            }
-        }
         
         // handle URL parameters
         Map<String, List<String>> parameters = new HashMap<String,List<String>>();
@@ -1887,8 +1874,21 @@ public final class HtmlRendererUtils {
         // component parameters, navigation-case parameters, view parameters
         // getBookmarkableURL deal with this details.
         ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
-        href = viewHandler.getBookmarkableURL(facesContext, href, parameters, 
+        String href = viewHandler.getBookmarkableURL(facesContext, 
+                navigationCase.getToViewId(facesContext), parameters, 
                 navigationCase.isIncludeViewParams() || component.isIncludeViewParams());
+        
+        // handle fragment (viewId#fragment)
+        String fragment = (String) component.getAttributes().get("fragment");
+        if (fragment != null)
+        {
+            fragment = fragment.trim();
+            
+            if (fragment.length() > 0)
+            {
+                href += "#" + fragment;
+            }
+        }
                 
         return href;
     }