Classes Required for Custom Components
A class that processes tag attributes:
- Creates component
- Transfers tag attribute values to component properties and
attributes
- Implementation is largely mechanical
- By convention, uses a Tag suffix, e.g. SpinnerTag
A class to represent the component:
- Maintains state
- Renders a user interface by encoding markup
- Processes user input by decoding HTTP request
- By convention, uses a UI prefix, e.g. UISpinner