Fixed: Navigate Accounts tree does not work
(OFBIZ-9191)

This is due to a change in (at least) Tomcat 8.0.39

Here is a simple fix. I tried other ways but none worked and I prefer to keep
this simple.
I tried other ways but none worked and I prefer to keep this simple.
* Using an encoder at this stage (just before calling the macro) is not an 
option. Or maybe by using the encoder on the linkurl variable alone. 
But then linkurl  must be transformed in a String and  back to a 
StringBuilder or more refactoring is needed. It does not worth it IMO.
* Also using encode="true" for links in AccountingTrees.xml does not work.

This also removes trailing blanks (by hand)

Thanks: Moatasim Al Masri for report


git-svn-id: https://svn.apache.org/repos/asf/ofbiz/trunk@1781125 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
index e158669..bdc0339 100644
--- a/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
+++ b/framework/widget/src/main/java/org/apache/ofbiz/widget/renderer/macro/MacroTreeRenderer.java
@@ -224,7 +224,7 @@
 
     public void renderLastElement(Appendable writer, Map<String, Object> context, ModelTree.ModelNode node) throws IOException {
         Boolean processChildren = (Boolean) context.get("processChildren");
-        if (processChildren.booleanValue()) {            
+        if (processChildren.booleanValue()) {
             StringWriter sr = new StringWriter();
             sr.append("<@renderLastElement ");
             sr.append("style=\"");
@@ -246,9 +246,9 @@
         sr.append("\" style=\"");
         sr.append(style);
         sr.append("\" labelText=\"");
-        sr.append(labelText);        
+        sr.append(labelText);
         sr.append("\" />");
-        executeMacro(sr.toString());        
+        executeMacro(sr.toString());
     }
 
     public void renderLink(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Link link) throws IOException {
@@ -259,8 +259,8 @@
         
         if (UtilValidate.isNotEmpty(target)) {
             WidgetWorker.buildHyperlinkUrl(linkUrl, target, link.getUrlMode(), link.getParameterMap(context), link.getPrefix(context),
-                    link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);            
-        }        
+                    link.getFullPath(), link.getSecure(), link.getEncode(), request, response, context);
+        }
         
         String id = link.getId(context);
         String style = link.getStyle(context);
@@ -288,20 +288,20 @@
         sr.append("\" title=\"");
         sr.append(title);
         sr.append("\" targetWindow=\"");
-        sr.append(targetWindow);  
+        sr.append(targetWindow);
         sr.append("\" linkUrl=\"");
-        sr.append(linkUrl);     
+        sr.append(linkUrl);
         sr.append("\" linkText=\"");
-        sr.append(linkText);           
+        sr.append(linkText);
         sr.append("\" imgStr=\"");
         sr.append(imgStr.replaceAll("\"", "\\\\\""));
         sr.append("\" />");
-        executeMacro(sr.toString());
+        executeMacro(sr.toString().replace("|", "%7C")); // Fix for OFBIZ-9191 
     }
   
     public void renderImage(Appendable writer, Map<String, Object> context, ModelTree.ModelNode.Image image) throws IOException {
         if (image == null) {
-            return ;            
+            return;
         }
         HttpServletResponse response = (HttpServletResponse) context.get("response");
         HttpServletRequest request = (HttpServletRequest) context.get("request");
@@ -357,7 +357,7 @@
         sr.append("\" urlString=\"");
         sr.append(urlString);
         sr.append("\" />");
-        executeMacro(sr.toString());        
+        executeMacro(sr.toString());
     }
 
     public ScreenStringRenderer getScreenStringRenderer(Map<String, Object> context) {