We're currently in the process of upgrading our application from Jboss 4.0.5/Portal 7.3 to JBoss 5.1.0/Portal 8.2.
I'm attempting to test some of our custom portlets in our new test site, and it appears in our JSP code that any request to create a PortletURL with multiple paramaters does not function as it originally did in our old configuration.
Here's a sample URL request creation from one of our JSP scriptlets:
PortletURL u = renderResponse.createActionURL();u.setParameter("action", "cpidProducts");u.setParameter("actionType", "cpidProductsForm");u.setParameter("PAYOR_CPIDS_PRODUCTS_OID", "%PAYOR_CPIDS_PRODUCTS_OID%");u.setParameter("CPID", "%CPID%");u.setParameter("CLEARINGHOUSE_ID", "%CLEARINGHOUSE_ID%");u.setParameter("PRODUCT_CODE", "%PRODUCT_CODE%");u.setParameter("snapshot", snapshot);item.put("href",u.toString());
this renders in Portal 7.3 like:
"<a href=\"/portal/site/CollaborationCompass/template.PAGE/action.process/menuitem.b94964ed5278cabb20a4845499a703a0/?javax.portlet.action=true&javax.portlet.tpst=af9787eea98031529fa4845499a703a0&javax.portlet.prp_af9787eea98031529fa4845499a703a0_CLEARINGHOUSE_ID=DBQ&javax.portlet.prp_af9787eea98031529fa4845499a703a0_action=cpidProducts&javax.portlet.prp_af9787eea98031529fa4845499a703a0_PRODUCT_CODE=CLAIMS&javax.portlet.prp_af9787eea98031529fa4845499a703a0_PAYOR_CPIDS_PRODUCTS_OID=337&javax.portlet.prp_af9787eea98031529fa4845499a703a0_CPID=1444&javax.portlet.prp_af9787eea98031529fa4845499a703a0_snapshot=1340898714521%3AcpidProductsResults&javax.portlet.prp_af9787eea98031529fa4845499a703a0_actionType=cpidProductsForm&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken\"
the same code renders in 8.2 like:
"<a href=\"/portal/site/CollaborationCompass/template.PAGE/action.process/menuitem.b94964ed5278cabb20a4845499a703a0/?javax.portlet.action=true&javax.portlet.tpst=af9787eea98031529fa4845499a703a0&javax.portlet.prp_af9787eea98031529fa4845499a703a0=CLEARINGHOUSE_ID%3D%2525CLEARINGHOUSE_ID%2525%26action%3DcpidProducts%26PAYOR_CPIDS_PRODUCTS_OID%3D%2525PAYOR_CPIDS_PRODUCTS_OID%2525%26PRODUCT_CODE%3D%2525PRODUCT_CODE%2525%26CPID%3D%2525CPID%2525%26actionType%3DcpidProductsForm%26snapshot%3D1340897670571%253AcpidProductsResults&javax.portlet.begCacheTok=com.vignette.cachetoken&javax.portlet.endCacheTok=com.vignette.cachetoken\"
Besides being shorter, it looks like there's two distinct differences here. One being that when the start of the custom parameters get added it adds a '=' sign instead of an underscore, and the other is that the '%' and '=' elements for those custom parameters appear to be encoded. (note in the 7.3 url, the values after the = sign are replaced by some other code later in the process with the correct key values)
Is this extra encoding being done intentionally per the spec or is there something container specific that would cause this? The only thing I see in documentation in the portlet API is that the developer should not have to encode this at all, as it's supposed to be handled internally.
Any suggestions on how to fix this issue would be greatly appreciated as most of our custom portlet code appears to render their actionURLs like this.