Class Html
- All Implemented Interfaces:
AttachNotifier,DetachNotifier,HasElement,HasStyle,Serializable
Note that it is the developer's responsibility to sanitize and remove any dangerous parts of the HTML before sending it to the user through this component. Passing raw input data to the user will possibly lead to cross-site scripting attacks.
This component does not expand the HTML fragment into a server side DOM tree
so you cannot traverse or modify the HTML on the server. The root element can
be accessed through Component.getElement() and the inner HTML through
getInnerHtml().
The HTML fragment cannot be changed after creation. You should create a new instance to encapsulate another fragment.
Note that this component doesn't support svg element as a root node. See
separate Svg component if you want to display SVG images.
- Since:
- 1.0
- Author:
- Vaadin Ltd
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidbindHtmlContent(Signal<String> htmlSignal) Binds aSignal's value to this component's HTML content (outer HTML) and keeps the content synchronized with the signal value while the component is attached.Gets the inner HTML, i.e.voidsetHtmlContent(String html) Sets the content based on the given HTML fragment.Methods inherited from class com.vaadin.flow.component.Component
addListener, bindVisible, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onAttach, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setVisibleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListenerMethods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListenerMethods inherited from interface com.vaadin.flow.component.HasStyle
addClassName, addClassNames, bindClassName, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName
-
Constructor Details
-
Html
Creates an instance based on the HTML fragment read from the stream. The fragment must have exactly one root element.A best effort is done to parse broken HTML but no guarantees are given for how invalid HTML is handled.
Any heading or trailing whitespace is removed while parsing but any whitespace inside the root tag is preserved.
- Parameters:
stream- the input stream which provides the HTML in UTF-8- Throws:
UncheckedIOException- if reading the stream fails
-
Html
Creates an instance based on the given HTML fragment. The fragment must have exactly one root element.A best effort is done to parse broken HTML but no guarantees are given for how invalid HTML is handled.
Any heading or trailing whitespace is removed while parsing but any whitespace inside the root tag is preserved.
- Parameters:
outerHtml- the HTML to wrap
-
Html
Creates an instance based on the given HTML fragment signal. The signal's current value must have exactly one root element. Subsequent changes to the signal will update the component's content (root tag cannot be changed after creation).- Parameters:
htmlSignal- the signal that provides the HTML outer content- Throws:
IllegalArgumentException- if the signal isnullor its current value is null or empty, or doesn't have exactly one root element
-
-
Method Details
-
setHtmlContent
Sets the content based on the given HTML fragment. The fragment must have exactly one root element, which matches the existing one.A best effort is done to parse broken HTML but no guarantees are given for how invalid HTML is handled.
Any heading or trailing whitespace is removed while parsing but any whitespace inside the root tag is preserved.
- Parameters:
html- the HTML to wrap
-
getInnerHtml
Gets the inner HTML, i.e. everything inside the root element.- Returns:
- the inner HTML, not
null
-
bindHtmlContent
Binds aSignal's value to this component's HTML content (outer HTML) and keeps the content synchronized with the signal value while the component is attached. When the component is detached, signal value changes have no effect.While a Signal is bound to the HTML content, any attempt to set the HTML content manually via
setHtmlContent(String)throwsBindingActiveException. The same happens when trying to bind a new Signal while one is already bound.The first value of the signal must have exactly one root element. When updating the content, the root tag name must remain the same as the component's current root tag.
- Parameters:
htmlSignal- the signal to bind, notnull- Throws:
BindingActiveException- thrown when there is already an existing binding
-