k918912 created WW-4843:
---------------------------

             Summary: DefaultUrlHelper().buildUrl() not outputting port when 
used as parameter
                 Key: WW-4843
                 URL: https://issues.apache.org/jira/browse/WW-4843
             Project: Struts 2
          Issue Type: Bug
          Components: Core
    Affects Versions: 2.3.33
            Reporter: k918912


This is related to WW-1950.

If you use the method DefaultUrlHelper().buildUrl() and set 
forceAddSchemeHostAndPort to true Struts2 does not always add the port. This is 
a problem if you intend to use the output as a parameter.

Example code:
{code:java}
Map<String, Object> parameters = new HashMap<String, Object>();
String backUrlParameters = new DefaultUrlHelper().buildUrl("someurl.html", 
getServletRequest(), getServletResponse(), null, null, true, false, true, true);
parameters.put("backUrl", backUrlParameters);
String backUrl = new DefaultUrlHelper().buildUrl("someurl2.html", 
getServletRequest(), getServletResponse(), parameters, null, false, false, 
false, false);
{code}

The resulting parameter appended to backUrl does not have the port, even with 
setting forceAddSchemeHostAndPort to true.
Resulting URL:
http://localhost:8080/someurl2.html?backUrl=http%3A%2F%2Flocalhost%2Fsomeurl.html

My current workaround is to use:
{code:java}
String backUrlParameters = new DefaultUrlHelper().buildUrl("someurl.html", 
getServletRequest(), getServletResponse(), null, 
getServletRequest().getScheme(), true, false, true, true);
{code}
This gives Struts2 the same scheme that is currently used but makes it think 
that there could be a change. Result is that the port in the parameter URL is 
appended.

My environment is Struts2 2.3.33 but I didn't see a code change in that area 
between 2.3 and 2.5, nonetheless I only selected the version I actually tested 
this on.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to