Hi Martin,
Yes, I think that approach is fine, because the chances of a user-specified id, or a
JSF-generated id starting with the same value as
externalContext.encodeNamespace("") is close to zero IMHO.
Best Regards,
Neil
On May 11, 2010, at 5:53 PM, Martin Marinschek wrote:
Hi Neil,
On 5/11/10, Neil Griffin <neil.griffin(a)portletfaces.org> wrote:
> 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;
> }
yes, ok, I knew that. I just don't see how to exploit it, cause the
hidden input with id javax.faces.ViewId will _not_ be namespaced. We
could determine the namespace and only update the
javax.faces.ViewId-elements within forms where the id starts with our
namespace?
best regards,
Martin