Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
3.0.1
-
None
Description
A portlet application with context root /online/ReferenzPortlets leads to an error when submitting a form - the url of the form cannot be executed - HTTP 400.
This is due to the character which replaces the middle "/" in the portlet id part of the URL.
To my analyses the problem arises in the class org.apache.pluto.driver.url.impl.PortalURLParserImpl in the method "toString" at line 454.
for (String pid : portalURL.getPortletIds()) {
pids.add(pid);
buffer.append(TOKEN_DELIM).append(PREFIX).append(PORTLET_ID);
try
catch(Exception e)
{ LOG.warn("Could not encode pid=" + pid); } buffer.append(DELIM).append(String.valueOf(pids.indexOf(pid)));
}
I suggest to replace the expression URLEncoder.encode(pid, "UTF-8") with urlEncode(pid). In the decode part there is already the use of the urlDecode method on the pid part of the URL.