Chapter 1. Introduction

Table of Contents

1.1. Introducing Wicket Objects
1.2. Wicket Objects Compared to other Wicket RAD Frameworks
1.2.1. Differences in Capability
1.2.2. Differences in Philosophy
1.2.3. Part of the Naked Objects Family
1.3. Wicket Objects compared to other Naked Objects Viewers
1.4. Typical Flow for Developing a Wicket Objects Application

Abstract

This introductory chapter describes the objective of Wicket Objects, and the target audience for this guide.

1.1. Introducing Wicket Objects

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 Components.

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 Components, 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).