Uploaded image for project: 'MyFaces Core'
  1. MyFaces Core
  2. MYFACES-1358

PortletExternalContextImpl should massage RenderResponse.getNamespace() into acceptable ID

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Invalid
    • 1.1.3
    • None
    • Portlet_Support
    • None
    • MacOS X, JDK 5, GridSphere Portal

    Description

      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

      Attachments

        Activity

          People

            Unassigned Unassigned
            novotny Jason Novotny
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: