Class Composite<T extends Component>

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.Composite<T>
Type Parameters:
T - the type of the content
All Implemented Interfaces:
AttachNotifier, DetachNotifier, HasElement, HasStyle, Serializable
Direct Known Subclasses:
AbstractCompositeField, CollaborationAvatarGroup, CollaborationMessageInput, CollaborationMessageList

public abstract class Composite<T extends Component> extends Component
A composite encapsulates a Component tree to allow creation of new components by composing existing components. By encapsulating the component, its API can be hidden or presented in a different way for the user of the composite.

The encapsulated component tree is available through getContent(). Composite will by default look at the generic type declaration of its subclass to find the content type and create an instance if the type has a no-args constructor. You can also override initContent() to manually create the component tree. The encapsulated component itself can contain more components.

Composite is a way to hide API on the server side. It does not contribute any element to the Element tree.

Since:
1.0
Author:
Vaadin Ltd
See Also:
  • Constructor Details

    • Composite

      protected Composite()
      Creates a new composite.

      To define your own composite, extend this class and implement initContent().

  • Method Details

    • initContent

      protected T initContent()
      Called when the content of this composite is requested for the first time.

      This method should initialize the component structure for the composite and return the root component.

      By default, this method uses reflection to instantiate the component based on the generic type of the sub class.

      Returns:
      the root component which this composite wraps, never null
    • getContent

      public T getContent()
      Gets the content of the composite, i.e. the component the composite is wrapping.
      Returns:
      the content for the composite, never null
    • getElement

      public Element getElement()
      Gets the root element of this composite.

      For a composite, the root element is the same as the root element of the content of the composite.

      Specified by:
      getElement in interface HasElement
      Overrides:
      getElement in class Component
      Returns:
      the root element of this component
    • getChildren

      public Stream<Component> getChildren()
      Gets the child components of this composite.

      A composite always has one child component, returned by initContent().

      Overrides:
      getChildren in class Component
      Returns:
      the child component of this composite
      See Also: