You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Scott O'Bryan (JIRA)" <de...@myfaces.apache.org> on 2006/10/04 18:37:21 UTC

[jira] Commented: (MYFACES-1358) PortletExternalContextImpl should massage RenderResponse.getNamespace() into acceptable ID

    [ http://issues.apache.org/jira/browse/MYFACES-1358?page=comments#action_12439891 ] 
            
Scott O'Bryan commented on MYFACES-1358:
----------------------------------------

You are incorrect.  The API specification for getNamespace reads:

"The value returned by this method should be prefixed or appended to elements, such as JavaScript variables or function names, to ensure they are unique in the context of the portal page."

According to the W3C and ECMA specifications for javascript variables, function names, and element id's, characters like the # are not valid characters for this purpose.  I'm of the opinion that MyFaces should not have to fix a deficiency in the GridSphere framework.

> PortletExternalContextImpl should massage RenderResponse.getNamespace() into acceptable ID
> ------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-1358
>                 URL: http://issues.apache.org/jira/browse/MYFACES-1358
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: Portlet_Support
>    Affects Versions: 1.1.3
>         Environment: MacOS X, JDK 5, GridSphere Portal
>            Reporter: Jason Novotny
>
> Hi,
>     I've been testing the most basic portlet in our GridSphere framework and ran into this error:
> java.lang.IllegalArgumentException: Subsequent characters of component identifier must be a letter, a digit, an underscore ('_'), or a dash ('-')! But component identifier contains "#"
>         at javax.faces.component.UIComponentBase.isIdValid(UIComponentBase.java:1049)
> It appears that PortletExternalContextImpl is using the RenderResponse.getNamespace() method which in our case will return a string containing a #.
> The JSR168 spec. does not specify any disallowed characters in getNamespace() so I think this is a bug in the PortletExternalContextImpl class-- probably in the
> public String encodeNamespace(String name)
> method, it should conert the response.getNamespace into a form that the UIComponentBase.isValid method can deal with.
>     Thanks, Jason

-- 
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