C
- type of the component to exportpublic abstract class WebComponentExporter<C extends Component> extends Object implements Serializable
Component
as a web component.
By extending this class you can export a server side Component
with a
given tag name so that it can be included in any web page as
<tag-name>
. You can add properties/attributes to the element, which
are synchronized with the server and you can fire events from the server,
which are available as custom events in the browser.
The tag name (must contain at least one dash and be unique on the target web
page) is provided through the super constructor. Note that the exporter tag
is not related to the tag used by the Component
being exported and
they cannot be the same.
The component class to exported is determined by the parameter given to
WebComponentExporter
when extending it, e.g.
extends WebComponentExporter<MyComponent>
.
If you want to customize the Component
instance after it has been
created, you should override
configureInstance(WebComponent, Component)
which is called for each
created instance.
Example of exporting MyComponent
to be used as
<my-component name="something">
:
public class Exporter extends WebComponentExporter<MyComponent>() { public Exporter() { super("my-component"); addProperty("name", "John Doe").onChange(MyComponent::setName); } protected void configureInstance(WebComponent<MyComponent> webComponent, MyComponent component) { // Configuration for the component instance goes here } }
WebComponentExporterFactory
,
Serialized FormModifier and Type | Class and Description |
---|---|
static class |
WebComponentExporter.WebComponentConfigurationFactory
Produces
WebComponentConfiguration instances from either
WebComponentExporter classes or instances. |
Modifier | Constructor and Description |
---|---|
protected |
WebComponentExporter(String tag)
Creates a new
WebComponentExporter instance and configures the
tag name of the web component created based on this exporter. |
Modifier and Type | Method and Description |
---|---|
PropertyConfiguration<C,Boolean> |
addProperty(String name,
boolean defaultValue)
Add an
Boolean property to the exported web component identified
by name . |
PropertyConfiguration<C,Double> |
addProperty(String name,
double defaultValue)
Add an
Double property to the exported web component identified
by name . |
PropertyConfiguration<C,Integer> |
addProperty(String name,
int defaultValue)
Add an
Integer property to the exported web component identified
by name . |
PropertyConfiguration<C,elemental.json.JsonValue> |
addProperty(String name,
elemental.json.JsonValue defaultValue)
Add an
JsonValue property to the exported web component
identified by name . |
PropertyConfiguration<C,String> |
addProperty(String name,
String defaultValue)
Add an
String property to the exported web component identified
by name . |
protected abstract void |
configureInstance(WebComponent<C> webComponent,
C component)
If custom initialization for the created
Component instance is
needed, it can be done here. |
protected Class<C> |
getComponentClass()
The concrete component class object.
|
String |
getTag()
The tag associated with the exported component.
|
void |
postConfigure()
Always called after
configureInstance(WebComponent, Component) . |
void |
preConfigure()
Always called before
configureInstance(WebComponent, Component) . |
protected WebComponentExporter(String tag)
WebComponentExporter
instance and configures the
tag name of the web component created based on this exporter.
This constructor is not meant to be overridden unless the exporter
can be extended. Rather, create a non-args constructor and call
this constructor from it.
tag
- tag name of the web component created by the exporter, cannot
be null
public final PropertyConfiguration<C,Integer> addProperty(String name, int defaultValue)
Integer
property to the exported web component identified
by name
.name
- name of the property. While all formats are allowed, names in
camelCase will be converted to dash-separated form, when
property update events are generated, using form
"property-name-changed", if the property is called
"propertyName"defaultValue
- default value of property.PropertyConfiguration
for configuring the propertypublic final PropertyConfiguration<C,Double> addProperty(String name, double defaultValue)
Double
property to the exported web component identified
by name
.name
- name of the property. While all formats are allowed, names in
camelCase will be converted to dash-separated form, when
property update events are generated, using form
"property-name-changed", if the property is called
"propertyName"defaultValue
- default value of property.PropertyConfiguration
for configuring the propertypublic final PropertyConfiguration<C,String> addProperty(String name, String defaultValue)
String
property to the exported web component identified
by name
.name
- name of the property. While all formats are allowed, names in
camelCase will be converted to dash-separated form, when
property update events are generated, using form
"property-name-changed", if the property is called
"propertyName"defaultValue
- default value of property.PropertyConfiguration
for configuring the propertypublic final PropertyConfiguration<C,Boolean> addProperty(String name, boolean defaultValue)
Boolean
property to the exported web component identified
by name
.name
- name of the property. While all formats are allowed, names in
camelCase will be converted to dash-separated form, when
property update events are generated, using form
"property-name-changed", if the property is called
"propertyName"defaultValue
- default value of property.PropertyConfiguration
for configuring the propertypublic final PropertyConfiguration<C,elemental.json.JsonValue> addProperty(String name, elemental.json.JsonValue defaultValue)
JsonValue
property to the exported web component
identified by name
.name
- name of the property. While all formats are allowed, names in
camelCase will be converted to dash-separated form, when
property update events are generated, using form
"property-name-changed", if the property is called
"propertyName"defaultValue
- default value of property.PropertyConfiguration
for configuring the propertyprotected abstract void configureInstance(WebComponent<C> webComponent, C component)
Component
instance is
needed, it can be done here. It is also possible to configure custom
communication between the component
instance and client-side web
component using the WebComponent
instance. The webComponent
and component
are in 1-to-1 relation.
Note that it's incorrect to call any addProperty
method within
configureInstance(WebComponent, Component)
method. All
properties have to be configured inside the exporter's constructor.
webComponent
- instance representing the client-side web component instance
matching the componentcomponent
- instance of the exported web componentpublic final void preConfigure()
configureInstance(WebComponent, Component)
.public final void postConfigure()
configureInstance(WebComponent, Component)
.public final String getTag()
Copyright © 2025. All rights reserved.