Table of Contents
Abstract
This introductory chapter describes the objective of Wicket Objects, and the target audience for this guide.
Wicket Objects provides a generic OOUI web-based viewer for Naked Objects domain models, using Apache Wicket as the underlying web framework.
What this means for you, the developer, is that you can build a
web application solely by developing the domain model as pojos.
Wicket Objects will then render your domain objects
in a web UI using ready provided
Wicket Component
s.
This generic UI provides a lot of functionality out-of-the-box:
Each domain entity is rendered as a form, with the appropriate individual component type for its values. This entity form also allows editable references to other objects, too.
Moreover, any collections of a domain entity (eg
Order
/ OrderDetail
)
are also automatically rendered as a list, a table, or in any other
appropriate representation. Both the scalar and collection
references let the end-user easily "walk the graph" around your
domain model.
Finally, Wicket Objects also renders actions (commands/behaviors) for your domain objects, and lets these actions to be invoked. This is what makes Naked Objects-based applications that much more than simple CRUD applications.
You can see examples of the UI in Chapter 2, Application Walkthrough.
Over and above this generic interface, you are then free to
customize this interface in various ways. Your customizations can be
general (eg providing a way to render a collection of
Locatable
objects in a google-maps mashup) or
targetted (eg a particular way to render a
ShoppingCartWizard
). Generally these
customizations take the form of bespoke Wicket
Component
s, though simple customizations can be
performed just by modifying the CSS. Again you can
see some examples of these customizations in Chapter 2, Application Walkthrough.
Wicket Objects web apps are bootstrapped the
same as vanilla Wicket applications, with
Wicket Objects providing an implementation of
Wicket's WebApplication
class that
additionally bootstraps the Naked Objects runtime.
Authentication is performed using Naked Objects own
authentication mechanism (which itself is pluggable).