public void assignIds ( final InputContainerElements elements , final FacesContext context ) { boolean refreshIds = false ; if ( getId ( ) . startsWith ( UIViewRoot . UNIQUE_ID_PREFIX ) ) { setId ( elements . getPropertyName ( context ) ) ; refreshIds = true ; } UIComponent label = elements . getLabel ( ) ; if ( label != null ) { if ( label . getId ( ) . startsWith ( UIViewRoot . UNIQUE_ID_PREFIX ) ) { label . setId ( getDefaultLabelId ( ) ) ; } else if ( refreshIds ) { label . setId ( label . getId ( ) ) ; } } for ( int i = 0 , len = elements . getInputs ( ) . size ( ) ; i < len ; i ++ ) { UIComponent input = ( UIComponent ) elements . getInputs ( ) . get ( i ) ; if ( input . getId ( ) . startsWith ( UIViewRoot . UNIQUE_ID_PREFIX ) ) { input . setId ( getDefaultInputId ( ) + ( i == 0 ? "" : ( i + 1 ) ) ) ; } else if ( refreshIds ) { input . setId ( input . getId ( ) ) ; } } for ( int i = 0 , len = elements . getMessages ( ) . size ( ) ; i < len ; i ++ ) { UIComponent msg = elements . getMessages ( ) . get ( i ) ; if ( msg . getId ( ) . startsWith ( UIViewRoot . UNIQUE_ID_PREFIX ) ) { msg . setId ( getDefaultMessageId ( ) + ( i == 0 ? "" : ( i + 1 ) ) ) ; } else if ( refreshIds ) { msg . setId ( msg . getId ( ) ) ; } } }
assigning ids seems to break form submissions but I don t know why