| |
| To modify tag attributes in a component's HTML markup we can use class _org.apache.wicket.AttributeModifier_. This class extends _org.apache.wicket.behavior.Behavior_ and can be added to any component via the _Component_'s _add_ method. Class _Behavior_ is used to expand component functionalities and it can also modify component markup. We will see this class in detail later in <<advanced.adoc#_enriching_components_with_behaviors,chapter 19.1>>. |
| |
| As first example of attribute manipulation let's consider a _Label_ component bound to the following markup: |
| |
| [source,html] |
| ---- |
| <span wicket:id="simpleLabel"></span> |
| ---- |
| |
| Suppose we want to add some style to label content making it red and bolded. We can add to the label an _AttributeModifier_ which creates the tag attribute _style_ with value _color:red;font-weight:bold_: |
| [source,java] |
| ---- |
| label.add(new AttributeModifier("style", "color:red;font-weight:bold")); |
| ---- |
| |
| If attribute _style_ already exists in the original markup, it will be replaced with the value specified by _AttributeModifier_. If we don't want to overwrite the existing value of an attribute we can use subclass _AttributeAppender_ which will append its value to the existing one: |
| |
| [source,java] |
| ---- |
| label.add(new AttributeAppender("style", "color:red;font-weight:bold")); |
| ---- |
| |
| We can also create attribute modifiers using factory methods provided by class _AttributeModifier_ and it's also possible to prepend a given value to an existing attribute: |
| |
| [source,java] |
| ---- |
| //replaces existing value with the given one |
| label.add(AttributeModifier.replace("style", "color:red;font-weight:bold")); |
| |
| //appends the given value to the existing one |
| label.add(AttributeModifier.append("style", "color:red;font-weight:bold")); |
| |
| //prepends the given value to the existing one |
| label.add(AttributeModifier.prepend("style", "color:red;font-weight:bold")); |
| ---- |
| |