code: public static char getSeparatorChar(FacesContext context) {
          
          if (null == context) {
              if (LOGGER.isLoggable(Level.SEVERE)) {
                  LOGGER.log(Level.SEVERE, "UINamingContainer.getSeparatorChar() called with null FacesContext. This indicates a SEREVER error. Returning {0}", NamingContainer.SEPARATOR_CHAR);
              }
              return NamingContainer.SEPARATOR_CHAR;
          }
  
  
          Character separatorChar =
                (Character) context.getAttributes().get(SEPARATOR_CHAR_PARAM_NAME);
          if (separatorChar == null) {
              String initParam = context.getExternalContext().getInitParameter(SEPARATOR_CHAR_PARAM_NAME);
              separatorChar = NamingContainer.SEPARATOR_CHAR;
              if (initParam != null) {
                  initParam = initParam.trim();
                  if (initParam.length() != 0) {
                      separatorChar = initParam.charAt(0);
                  }
              }
              context.getAttributes().put(SEPARATOR_CHAR_PARAM_NAME, separatorChar);
          }
          return separatorChar;
  
      }
docs: <p class="changed_added_2_0">Return the character used to separate
  segments of a clientId.  The implementation must determine if there is a
  &lt;<code>context-param</code>&gt; with the value given by the value of
  the symbolic constant {@link #SEPARATOR_CHAR_PARAM_NAME}.  If there is a
  value for this param, the first character of the value must be returned
  from this method.  Otherwise, the value of the symbolic constant {@link
  NamingContainer#SEPARATOR_CHAR} must be returned.</p>
  
  @param context the {@link FacesContext} for the current request
  @since 2.0