You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Rainer Hermanns (JIRA)" <ji...@apache.org> on 2006/12/05 20:59:57 UTC

[jira] Commented: (WW-1537) URL tag: webapp root repeats when path saved to local variable

    [ http://issues.apache.org/struts/browse/WW-1537?page=comments#action_38986 ] 
            
Rainer Hermanns commented on WW-1537:
-------------------------------------

Here is a patch proposal:
o reverted the call to buildUrl for the href attribute
o adding an additional attribute for ajaxHref containg the call to buildUrl
o changing the ajax templates to use the new attribute

o changed UrlHelper to check for an already added context path
(This last change needs some more thinking):

Problem: 
something like "/showcase/showcase/action.action" would not work, even if it would be intended?
 

Index: core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java
===================================================================
--- core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java	(revision 482733)
+++ core/src/main/java/org/apache/struts2/components/AbstractRemoteCallUIBean.java	(working copy)
@@ -48,8 +48,10 @@
     public void evaluateExtraParams() {
         super.evaluateExtraParams();
 
-        if (href != null)
-            addParameter("href", UrlHelper.buildUrl(findString(href), request, response, null));
+        if (href != null) {
+            addParameter("href", findString(href));
+            addParameter("ajaxHref", UrlHelper.buildUrl(findString(href), request, response, null));
+        }
         if (errorText != null)
             addParameter("errorText", findString(errorText));
         if (loadingText != null)
Index: core/src/main/java/org/apache/struts2/views/util/UrlHelper.java
===================================================================
--- core/src/main/java/org/apache/struts2/views/util/UrlHelper.java	(revision 482733)
+++ core/src/main/java/org/apache/struts2/views/util/UrlHelper.java	(working copy)
@@ -129,7 +129,7 @@
             // Add path to absolute links
             if (action.startsWith("/") && includeContext) {
                 String contextPath = request.getContextPath();
-                if (!contextPath.equals("/")) {
+                if (!contextPath.equals("/") && !action.startsWith('/' + contextPath + '/')) {
                     link.append(contextPath);
                 }
             } else if (changedScheme) {
Index: core/src/main/resources/template/ajax/tab.ftl
===================================================================
--- core/src/main/resources/template/ajax/tab.ftl	(revision 482733)
+++ core/src/main/resources/template/ajax/tab.ftl	(working copy)
@@ -2,9 +2,9 @@
   <#if parameters.title?if_exists != "">
     label="${parameters.title?html}"<#rt/>
   </#if>
-  <#if parameters.href?if_exists != "">
+  <#if parameters.ajaxHref?if_exists != "">
     dojoType="LinkPane" <#rt/>
-    href="${parameters.href}"<#rt/>
+    href="${parameters.ajaxHref}"<#rt/>
     <#else>
     dojoType="ContentPane"<#rt/>
   </#if>
Index: core/src/main/resources/template/ajax/ajax-common.ftl
===================================================================
--- core/src/main/resources/template/ajax/ajax-common.ftl	(revision 482733)
+++ core/src/main/resources/template/ajax/ajax-common.ftl	(working copy)
@@ -25,8 +25,8 @@
   <#if parameters.name?if_exists != "">
   	name="${parameters.name?html}"<#rt/>
   </#if>
-  <#if parameters.href?if_exists != "">
-  	href="${parameters.href}"<#rt/>
+  <#if parameters.ajaxHref?if_exists != "">
+  	href="${parameters.ajaxHref}"<#rt/>
   </#if>
   <#if parameters.loadingText?if_exists != "">
     loadingText="${parameters.loadingText?html}"<#rt/>


> URL tag: webapp root repeats when path saved to local variable
> --------------------------------------------------------------
>
>                 Key: WW-1537
>                 URL: http://issues.apache.org/struts/browse/WW-1537
>             Project: Struts 2
>          Issue Type: Bug
>            Reporter: Ted Husted
>         Assigned To: Rainer Hermanns
>            Priority: Blocker
>
> Markup like
> <s:url id="url" action="showActionTagDemo" namespace="/tags/non-ui/actionTag"/><s:a href="%{url}">Action
> </s:a>
> should render an URI like 
> * http://localhost:8080//struts2-showcase/tags/non-ui/
> but instead renders 
> * http://localhost:8080/struts2-showcase/struts2-showcase/tags/non-ui/
> Meanwhile 
> * <a href="<s:url id="url" action="showActionTagDemo" namespace="/tags/non-ui/actionTag"/>">Action Tag</a>
> renders correctly, the difference being one uses a local variable. 
> Similarly, 
> * <s:url id="url" value="/tags/non-ui/" /><s:a href="%{url}">Non UI Tags Examples</s:a>
> also hiccups and renders the web application root twice. 
> By contrast 
> * <s:url id="url" value="date.jsp" /><s:a href="%{url}">Date Tag</s:a>
> which doesn't inlcude a path, renders just fine, 
> * http://localhost:8080/struts2-showcase-2.0.2/tags/non-ui/date.jsp

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/struts/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira