[ http://issues.apache.org/jira/browse/PB-35?page=comments#action_12365400
]
russ danner commented on PB-35:
-------------------------------
Seems to be the fix - have some other issues now, but ID's are showing as
expected
/**
* @see
javax.faces.context.ExternalContext#encodeNamespace(java.lang.String)
*/
public String encodeNamespace(String pNamespace)
{
/* define locals */
String vRetEncodedNamespace = null;
if (!(this.portletResponse instanceof RenderResponse))
{
throw new IllegalArgumentException("Only RenderResponse can be used
to encode namespace");
}
else
{
vRetEncodedNamespace =
((RenderResponse)this.portletResponse).getNamespace()+pNamespace;
}
return vRetEncodedNamespace;
};
> Multiple instances of the same bridge application behave badly due to ID
> conflicts
> ----------------------------------------------------------------------------------
>
> Key: PB-35
> URL: http://issues.apache.org/jira/browse/PB-35
> Project: Portals Bridges
> Type: Bug
> Components: jsf
> Environment: Tested in Liferay
> Reporter: russ danner
>
> I am using the myFaces implementation of JSF in conjunction with the Apache
> portal bridge.
> I have no issue when I use the portlet as a single instance. All is
> beautiful. When I make the portlet multi-instance the eorld comes tumbling
> down. All the javascript and component ID's are the same.
> --
> I know myfaces looks to the external context to call help create a unique id
> for the components which should call response.namespace();
> You can see in the HTML output of the lifray install that unqiue names are
> being generated for the each portlet (both the same "flavor")
> portlet [EMAIL PROTECTED] namespace
> response[_contentRepositoryBrowser-wide_WAR_contentRepositoryBrowser_INSTANCE_Ju5n_]
> portlet [EMAIL PROTECTED] namespace
> response[_contentRepositoryBrowser-wide_WAR_contentRepositoryBrowser_INSTANCE_1cKB_]
> I know myFaces makes the following call on create unique Id:
> public String createUniqueId()
> {
> ExternalContext extCtx =
> FacesContext.getCurrentInstance().getExternalContext();
> return extCtx.encodeNamespace(UNIQUE_ID_PREFIX + _uniqueIdCounter++);
> }
> which in the end should pickup the names given by
> RenderResponse.getNamespace(), yet that is no where in the HTML output.
> As far as I can tell this is because the external context implementation
> provided with the apache jsf portlet bridge does the following:
> /**
> * @see
> javax.faces.context.ExternalContext#encodeNamespace(java.lang.String)
> */
> public String encodeNamespace(String s)
> {
> return s;
> }
> according to the documentation for ExternalContext.encodeNamespace(..)
> Return the specified name, after prefixing it with a namespace that ensures
> that it will be unique within the context of a particular page.
> Servlet: The input value must be returned unchanged.
> Portlet: The returned value must be the input value prefixed by the value
> returned by the javax.portlet.RenderResponse method getNamespace().
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]