[ http://issues.apache.org/jira/browse/PB-35?page=all ] Work on PB-35 started by David Sean Taylor
> 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 > Assignee: David Sean Taylor > > 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]
