1) Ease-of-use
Typically, native Struts development requires management and synchronization of multiple files for each Action, form bean, and the Struts configuration file. Even in the presence of tools that help edit these files, developers are still exposed to all the underlying plumbing, objects, and configuration details. Java Page Flows provide a dramatically simpler, single-file programming model that allows developers to focus on the code they care about, see a visual representation of the overall application flow, and easily navigate between pages, actions, and form beans. Page Flows also provide a number of wizards to automate common tasks and visualize tag libraries. Furthermore, Java Page Flows provide key programming model benefits like thread-safety, so developers can be abstracted from some of the complexities that are pervasive in other popular web development models like Struts and servlets. The net result is that Java Page Flows enables developers to become immediately productive in building sophisticated Web applications without the learning curve typically associated with Struts.
2) Automated State Management
Java Page Flows make state management easy - you can put data in session state simply by using a variable in your JPF controller class (unlike with Struts action classes), or you can easily pass data (as Java beans) to individual pages. Data stored in the session state is automatically freed as a user leaves the Java Page Flow for efficient use of session data.
3) Nested Java Page Flows
The nesting feature of Java Page Flows enables developers to easily create, visualize, and manage smaller nested applications that may be linked together, helping to enforce a modular design paradigm and supporting larger team development projects. Importantly, WebLogic Workshop automatically manages session state as a user moves between nested Java Page Flows. This functionality benefits developers by ensuring state scalability for the aggregate Web application without requiring developers to manually store/preserve session state.
4) Rich Data-binding Support
WebLogic Workshop's out-of-the-box data-binding tags and wizards make it extremely easy to create rich, dynamic pages within a Java Page Flow. These features enable binding of UI components to numerous data contexts (not just limited to form beans) and the data may come from any source - a database, a web service, an EJB, a custom application, etc. The data-binding tags allow a developer to simply drag-and-drop to bind to data including complex types such as repeating data, lists, trees, tables, etc.
5) Service-Oriented Design with Java Controls
Java Page Flows have full support for Java Controls, a simple programming model abstraction for accessing enterprise resources and packaging business logic. Java Controls give developers access to the powerful features of the J2EE platform (security, transactions, asynchrony) in a simple, graphical environment with methods, events and properties, and enable developers to build Web applications conforming to best practices for service-oriented architecture.
6) Easy Integration with Portal
Have a Java Page Flow? You also have a portlet! Java Page Flow applications can be instantly turned into portlets via a simple wizard in WebLogic Workshop.
7) Strong-typing
Struts actions must use the base ActionForm class and then require developers to perform the necessary type-casting. Java Page Flows, on the other hand, allows developers to specify a specific type of action form for any JPF action, thereby providing convenient access to strongly-typed data and making it a lot easier to work with form information. And more generally, Java Page Flows provide for significantly cleaner action signatures because they don't require the four general parameters required by a Struts action.
8) More Powerful Action and Exception Handling
With Java Page Flows, you can handle exceptions by pointing to local actions in your Page Flows classes. Another advantage is support for a fallback handler (Global.app) which can catch actions and exceptions unhandled in the local Java Page Flow. For example, the user-defined actions in Global.app can be used to handle not-logged-in errors globally across a set of Java Page Flows. These features make it much easier to manage errors and centralized login processes for your entire application versus managing a cloud of exception handler classes in Struts.
9) Ultra-fast Iterative Development Experience
With WebLogic Workshop and Java Page Flows, developers don't need to go through the typically tedious development cycle of edit, build, deploy, and test. Simply make a change and hit run - WebLogic Workshop's streamlined iterative development model with automated deployment and integrated testing will show you the results of your code change immediately. Plus, more errors are caught up-front through WebLogic Workshop's JPF compiler, versus becoming evident only at runtime through exceptions or misbehavior.
10) Fully-built on Top of the Open Source Struts Framework
While Java Page Flows provide a number of compelling advantages relative to plain-vanilla Struts, keep in mind that Java Page Flows are fully based on Struts. This means that Java Page Flows are naturally interoperable with your existing Struts applications. You can use WebLogic Workshop's "Struts-merge" facility to get full access to underlying Struts configuration details, and Page Flows are fully interoperable with existing Struts applications. Moreover, with our portability kit, you can run a Java Page Flow application on any servlet container that supports Struts.
To learn more about Java Page Flows:
- Download a free copy of BEA WebLogic Platform 8.1
- Explore the WebLogic Platform 8.1 Evaluation Guide
- Take the Java Page Flow Tutorial
- Read the following dev2dev articles about Java Page Flows:
To learn more about Struts, see the Apache Struts project page.





