in jee-modules/jsf-module/impl/src/main/java/org/apache/myfaces/extensions/cdi/jsf/impl/util/JsfUtils.java [152:199]
public static String addParameters(ExternalContext externalContext, String url,
boolean addRequestParameter, boolean addPageParameter, boolean encodeValues)
{
StringBuilder finalUrl = new StringBuilder(url);
boolean existingParameters = url.contains("?");
boolean urlContainsWindowId = url.contains(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY + "=");
for(RequestParameter requestParam :
getParameters(externalContext, true, addRequestParameter, addPageParameter))
{
String key = requestParam.getKey();
//TODO eval if we should also filter the other params
if(WindowContextManager.WINDOW_CONTEXT_ID_PARAMETER_KEY.equals(key) && urlContainsWindowId)
{
continue;
}
for(String parameterValue : requestParam.getValues())
{
if(!url.contains(key + "=" + parameterValue) &&
!url.contains(key + "=" + encodeURLParameterValue(parameterValue, externalContext)))
{
if(!existingParameters)
{
finalUrl.append("?");
existingParameters = true;
}
else
{
finalUrl.append("&");
}
finalUrl.append(key);
finalUrl.append("=");
if(encodeValues)
{
finalUrl.append(JsfUtils.encodeURLParameterValue(parameterValue, externalContext));
}
else
{
finalUrl.append(parameterValue);
}
}
}
}
return finalUrl.toString();
}