Class HtmlContainer

All Implemented Interfaces:
AttachNotifier, DetachNotifier, HasComponents, HasComponentsOfType<Component>, HasElement, HasEnabled, HasSize, HasStyle, HasText, Serializable

public class HtmlContainer extends HtmlComponent implements HasComponents, HasText
Base class for a Component that represents a single built-in HTML element that can contain child components or text.

This base class is meant for elements whose HTML content model accepts any kind of content, such as <div>, <span> or <section>. It implements HasComponents, so any Component can be added as a child and the API cannot prevent a child that the element isn't allowed to contain.

Elements with a restricted content model are a poor fit. Such a component should instead extend HtmlComponent and expose only an API that matches what the element actually accepts. The shape of that API depends on the element:

  • When each part of the content is different, a dedicated API for each part is the clearest option. A <table>, for example, accepts an optional <caption>, then <colgroup>, <thead>, <tbody> and <tfoot> elements in a specific order, so a table component is better served by separate methods for the caption, the header, the bodies and the footer than by a generic add-a-child method.
  • When all children are of the same type, such as the <li> children of a <ul>, HasComponentsOfType gives the same add and remove methods as HasComponents while rejecting unrelated components already at compile time.
Since:
1.0
Author:
Vaadin Ltd
See Also:
  • Constructor Details

    • HtmlContainer

      protected HtmlContainer()
      Creates an empty component with the element determined by the Tag annotation of a sub class.
    • HtmlContainer

      protected HtmlContainer(Component... components)
      Creates a component with the given child components. The element is determined by the Tag annotation of a sub class.
      Parameters:
      components - the child components
    • HtmlContainer

      public HtmlContainer(String tagName)
      Creates a new empty component with a new element with the given tag name.
      Parameters:
      tagName - the tag name of the element to use for this component, not null
    • HtmlContainer

      public HtmlContainer(String tagName, Component... components)
      Creates a new component with the given contents and a new element with the given tag name.
      Parameters:
      tagName - the tag name of the element to use for this component, not null
      components - the child components