Since UIViewRoot does not implement NamingContainer, the JSR 301/329 specs
defines the PortletNamingContainerUIViewRoot [1] which, as its name indicates,
does indeed implement NamingContainer. This is what causes a nice namespaced ID
for all components in the rendered view. The code for this typically looks
something like this:
public class PortletNamingContainerUIViewRoot extends UIViewRoot implements
NamingContainer, Serializable {
private static final long serialVersionUID = 6744332823172081041L;
private String namespace;
@Override
public String getContainerClientId(FacesContext facesContext) {
if (namespace == null) {
ExternalContext externalContext =
facesContext.getExternalContext();
namespace = externalContext.encodeNamespace("");
}
return namespace;
}
}
Neil
[1]
http://myfaces.apache.org/portlet-bridge/2.0/api/apidocs/javax/portlet/faces/component/PortletNamingContainerUIViewRoot.html
On May 11, 2010, at 5:18 PM, Martin Marinschek wrote:
> On 5/6/10, Alexander Smirnov <[email protected]> wrote:
>> Let me point out that Mojarra already takes care for state in AJAX
>> requests in the server-side saving. In the case of partial request,
>> ServerSideStateHelper ( see line 196 ) reuses view state and doesn't
>> change content of the javax.faces.ViewState parameter, so any request
>> from page should restore proper state because it has the same id as it
>> was rendered in AJAX request.
>> Therefore, that bug applicable for client-side state only, but updating
>> state parameter for ALL forms on the page could cause problem for portal
>> environment there each portlet keeps its own state that should not be
>> updated by requests from others...
>
> Interesting problem.
>
> So we are rendering multiple forms, and in one case, the forms belong
> to one application, and in another case, they are from different
> applications. How can we find out which forms belong to our
> application? Portal environments will namespace their content, but
> there is no way for us to find out - right? Would we need to keep
> track of our forms during rendering?
>
> best regards,
>
> Martin