1. Scope
1.1 Overview
This component provides the ability to alter an HTML form at the client side. The component
does not integrate deeply with JSF, but it does support the alteration of JSF elements (at the
client side). The client side interprets text instructions to hide, show, and change HTML
elements. Hiding and showing is done by adding and removing elements from the DOM tree.
Alteration will only extend to form input elements.
The main initial use of this component will be through AJAX driven events. As an example, a user
may enter a coupon code. The blur event will initiate an AJAX call to verify the coupon code.
The validation result may include some instructions to the Mutable Form component, for instance
hiding or showing a “bonus” JSF panel or other form element.
1.2 Logic Requirements
The command naming is up to the designers discretion, but the goal is to make the messaging
easy to be read and understood by humans. The message format is relatively flexible, but please
post to the forum before making any significant changes. The messaging format should be JSON
compatible for easy interoperability with other JSON aware applications.
1.3 Required Algorithms
The basic algorithm for managing elements at the client side must be included with the design.
1.4 Example of the Software Usage
A user registration form uses the mutable form to dynamically adjust its interface with the client,
without requiring a full page round trip. For instance, when the user selects P.O. Box, the P.O.
Box section of the form can be shown, and the street address can be hidden.
1.5 Future Component Direction
No future direction at this time. Potential enhancements would be to use more complex
operations or mutations.
2. Interface Requirements
2.1.1 Graphical User Interface Requirements
The component itself has no user interface, but the effects of this component should be visible to
the user. Hidden elements must leave no indication of their state, from the literal user view, and
shown elements should be identical to their state before being hidden.
2.1.2 External Interfaces
The required external interfaces are detailed above. They include:
• Message format
• Initialize call
• Finalize call