From: <jm...@us...> - 2006-03-02 08:39:25
|
Update of /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14195/src/documentation/content/xdocs/strutsdialogs Modified Files: index.xml Added Files: index_v1.xml Log Message: --- NEW FILE: index_v1.xml --- <?xml version="1.0"?> <!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN" "document-v11.dtd"> <document> <header> <title>Struts Dialogs</title> </header> <body> <section id="overview_new"> <title>Overview</title> <p><strong>Struts Dialogs</strong> is a library for Struts 1.2.x framework, which improves development process and makes applications more robust and user-friendly. Struts Dialogs combines best features of Struts Front Controller pattern with Page Controller features of ASP.NET. It implements event handling, basic state management, provides simplified control flow and facilitates component development.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, action forms and JSP pages.</li> <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> <li><strong>State management</strong> - using session-scoped form bean as first-class stateful input/output object.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> <li><strong>Web Wizards</strong> - controlled flow of web pages for a given web resource, similar to traditional desktop wizard dialogs.</li> </ul> </section> <section id="controlflow"> <title>Front Controller pattern</title> <p>Struts is a controller framework that adheres closely to the principles of Front Controller Pattern (<link href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html">J2EE Front Controller pattern</link>, <link href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp">.NET Front Controller pattern</link>):</p> <ul> <li><strong>ActionServlet</strong>, <strong>RequestProcessor</strong>: Controller (J2EE); Handler (.NET)</li> <li><strong>Action</strong>: Dispatcher (J2EE); part of Command (.NET)</li> <li><strong>ActionForm</strong>: part of Command (.NET)</li> <li><strong>JSP page</strong>: view</li> </ul> <p>The Front Controller pattern does not specify the exact details of how the state should be managed, or how a response should be handled after a view is rendered.</p> </section> <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> <p>Class <code>ActionForm</code> was initially designed as convenience object for input data. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> <p>Struts users came up with idea of pre-action (output action, setup action) and post-action (input action) dispatchers, so actions and JSP pages are interlaced, while action-relevant business data (green oval on the picture below) is located outside of an action:</p> <figure src="images/struts-pre-post-action.gif" alt="Pre- and Post- actions"/> <p>Each interactive JSP page is handled by at least two actions, and each action can render different pages. Because of many-to-many relationships between actions and JSP pages, web application becomes hard to maintain right from the start.</p> </section> <section id="codebehind"> <title>Struts Dialogs: code-behind and event handling</title> <p>Struts Dialogs makes development simpler by employing code-behind pattern similar to one used in ASP.NET framework, while keeping your investments into Struts.</p> <p>One of the ASP.NET concepts is the unity of page markup (ASPX) and business-related code (C# or VB). A page layout and widgets are defined in the markup, while page lifecycle and incoming events are handled by corresponding class file. This concept is especially easy to grasp for programmers of desktop applications:</p> <source> Before page is displayed, the code behind it initializes page data. After page is rendered, activating a widget in the browser window generates event, which is dispatched to a handler. defined in the class. </source> <p>This pattern is implemented by Struts Dialogs with no changes to core Struts classes or tag libraries. Moreover, it is improved, because Struts allows to define several markup pages corresponding to one Java class.</p> <p>To use event-dispatching actions one should think in terms of <em>web resources</em>. Internet is about web resources, not about mere pages. A page is just a visualization of a resource in its current state at a given time. An address identifies a resource, not a particular representaion of it. A resource can be rendered differently depending on its state.</p> <figure src="images/struts-dialog-action.gif" alt="Dialog action"/> <p>In Struts Dialogs each resource is represented by one action (which consists of an action class and a form bean). Depending on resource state, an action can render one view or another. Views, corresponding to an action, are defined as JSP pages. Each JSP page belongs to one action only, which is called a <em>parent action</em>.</p> <p>Submission of a form from JSP page generates input event, which is handled by the page's parent action. Action class defines handler methods for every input event. Input events can be generated not only by submitting a form (POST), but also by clicking on a command link (GET). Think of enhanced <code>DispatchAction</code>.</p> <p>Direct linking from JSP page to another resource is possible, but discouraged. Instead, a command link should generate an event, which would be handled by parent action class. It is up to an action class to decide where to navigate next. This approach allows to define all navigation targets in the <code>struts-config.xml</code> file, having a clear representation of web application structure.</p> </section> <section id="state_management"> <title>State management</title> <p>Struts Dialogs does not introduce new classes to manage application state. Instead, it uses existing ActionForm class as a first-class stateful input/output object. In JSF terms, ActionForm now acts as a backing bean for JSP page. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> <p>With changing ActionForm scope to session, it is possible to initialize form bean only once, and to reuse data between requests. This is convenient for form resubmissions, for page reloading or for navigating back to previous resource. Having all resource data in a single ActionForm simplifies JSP page. Struts automatically populates ActionForm with submitted data on input phase, the same data can be used for presentation on render phase without additional efforts.</p> <p>Session scope justifies the usage of nested properties within ActionForm. It is easy and convenient to use business objects or DTOs as nested properties instead of copying their data to ActionForm and from ActionForm.</p> </section> <!-- <section id="components"> <title>Component Development</title> <p>Struts Dialogs library allows building <em>web components</em> using Struts and JSP.</p> <p><strong>Web component</strong> is a server-side object, which is:</p> <ul> <li>stateful;</li> <li>can process input events;</li> <li>can render itself according to its current state;</li> </ul> <p><strong>Web control</strong> is a web component, which:</p> <ul> <li>can be embedded into a <em>master page</em>;</li> <li>can interact with master page and, optionally, with other web controls.</li> </ul> <p><strong>Web dialog</strong> is a special case of a web component, which has only one corresponding view.</p> <p>If the above definition sounds too vague and generic, think of a standard login form. It asks a user for name and password. If entered information is incorrect, login form redisplays itself along with error message. Login form can render itself, it has only one view, and it is stateful, because if you reload login page, it retains username and password. Therefore, login form is an example of a <link href="http://www.superinterface.com/strutsdialog/logindialog.html">login dialog</link>.</p> <p>Now consider a component which not only collects username and password, but also displays user's login/logout status. It is more complex than a login dialog, because it maintains two states and two corresponding views: "not logged in" and "logged in". This is a <link href="http://www.superinterface.com/strutsdialog/logincomponent.html">login component</link>. After user successfully logs in, login component displays page corresponding to "logged in" state, which shows user information. Whenever logged-in user navigates to this component, the latter shows user's information.</p> <p>What if we want to embed login component in a complex web page? For example, see how it is done by CollabNet on <link href="http://www.java.net">www.java.net</link> website. There is a small login form in the upper right corner of the home page. After you log in, the content of the form changes and shows your login name and logout button. This login form, embedded into master page, is an example of <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> </section> --> <section id="actions"> <title>Actions</title> <p>Most features of the Struts Dialogs library are available through use of different action classes. Most often you will be using DialogAction class, extending your specific action class from it.</p> <section id="selectaction"> <title>SelectAction: dispatches submit events</title> <p><link href="selectaction.html">SelectAction</link> is an enhancement of standard DispatchAction. It handles submit events and provides improved dispatching functionality. You can use this action class if you do not need full power of DialogAction, and all you want is just to dispatch submit events to handler methods. SelectAction has the following features:</p> <ul> <li>works uniformly with pushbuttons, image buttons and regular links;</li> <li>allows to set arbitrary button caption and to change it at runtime.</li> </ul> </section> <section id="dialogaction"> <title>DialogAction: Jack of all trades</title> <p><link href="dialogaction.html">DialogAction</link> is the main asset of Struts Dialogs library.</p> <p>DialogAction allows creating robust web components and web controls, which enhibit friendly user experience, react properly to Refresh, Back and Forward buttons, and do not cause implicit double submits or annoying POSTDATA messages.</p> <p><code>DialogAction</code> adds the following capabilities to event dispatching features of SelectAction:</p> <ul> <li>processing of initialization event;</li> <li>handling of error messages;</li> <li>view rendering;</li> <li>state handling (via corresponding action form);</li> <li>two-phase input processing (using POST-redirect-GET pattern)</li> </ul> </section> <section id="wizardaction"> <title>WizardAction: creates robust page flows</title> <p><link href="wizardaction.html">WizardAction</link> allows to create <em>web wizards</em>, similar to traditional desktop wizard dialogs. A wizard has predefined sequence of states, and is rendered with HTML forms, containing Back, Forward, Cancel and Done pushbuttons.</p> </section> <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> <p><link href="crudaction.html">CRUDAction</link> implements all operations needed to manipulate business data, nested business object (BO), or nested value object (VO) also called an <code>item</code>. This action allows to create new item, duplicate existing item, edit, view, clear and delete item.</p> <p>A very common use case is browsing a list of items, then selecting one item and performing different operations on it. CRUDAction can handle this use case with grace. It is possible to implement handling of both item list and CRUD operations as one web component.</p> </section> </section> <section id="mailreader"> <title>Mail Reader demo application</title> <p>The Struts Dialogs package now includes a version of "MailReader Demonstration Application", originally bundled with core Struts distribution.</p> <p>MailReader is rewritten using component technology of Struts Dialogs to show the possibility and benefits of component approach for a Struts application. See the <link href="mailreader-walkingtour.html">Mail Reader Walking Tour</link> for details.</p> <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> to compare Struts Dialogs implementation with original Struts version.</p> </section> <section id="demos"> <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and <link href="http://www.superinterface.com/strutsdialog">live demos</link>.</p> </section> <section id="download"> <title>Download</title> <p><link href="https://sourceforge.net/project/showfiles.php?group_id=49385&package_id=154597">Download Struts Dialogs</link>.</p> </section> </body> </document> Index: index.xml =================================================================== RCS file: /cvsroot/struts/struts-site/src/documentation/content/xdocs/strutsdialogs/index.xml,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** index.xml 10 Feb 2006 07:59:51 -0000 1.18 --- index.xml 2 Mar 2006 08:39:16 -0000 1.19 *************** *** 8,18 **** <body> <section id="overview_new"> <title>Overview</title> ! <p><strong>Struts Dialogs</strong> is a library for Struts 1.2.x framework, which improves ! development process and makes applications more robust and user-friendly. ! Struts Dialogs combines best features of Struts Front Controller pattern with ! Page Controller features of ASP.NET. It implements event handling, basic state management, ! provides simplified control flow and facilitates component development.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, --- 8,27 ---- <body> + <section id="overview_v2"> + <title>Version 2.0 preview is available</title> + <p>Check out the preview of Struts Dialogs version 2.0. Same functionality, + simpler configuration and less classes. You can find the preview release + in the <link href="https://sourceforge.net/project/showfiles.php?group_id=49385&package_id=154597">download section</link>. + The final release of version 2.0 is unlikely to contain code changes. It will contain more samples and better documentation. + This page is work in progress in preparation for version 2.0. The samples look and behave the same, so 1.x online demos are + still relevant.</p> + <p>Version 1.x documentation can be found <link href="index_v1.html">here</link>.</p> + </section> + <section id="overview_new"> <title>Overview</title> ! <p><strong>Struts Dialogs</strong> is both a library and a development approach for Struts 1.2.x framework ! that improves development process and makes applications more robust and user-friendly. ! Struts Dialogs demonstrates how event handling, basic state management, and provides simplified control flow.</p> <ul> <li><strong>Simplified control flow</strong> - cleaner separation of concerns between actions, *************** *** 20,25 **** <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> ! <li><strong>State management</strong> - using session-scoped form bean as first-class stateful ! input/output object.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> --- 29,33 ---- <li><strong>Event handling</strong> - uniform processing of command links and form submission events.</li> ! <li><strong>State management</strong> - using session-scoped form bean as stateful input/output buffer.</li> <li><strong>Easier configuration</strong> - improved request/response cycle is controlled with less XML markup and fewer Java classes.</li> *************** *** 29,111 **** </section> - <section id="controlflow"> - <title>Front Controller pattern</title> - <p>Struts is a controller framework that adheres closely to the principles of Front Controller Pattern - (<link href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/FrontController.html">J2EE Front Controller pattern</link>, - <link href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/DesFrontController.asp">.NET Front Controller pattern</link>):</p> - - <ul> - <li><strong>ActionServlet</strong>, <strong>RequestProcessor</strong>: Controller (J2EE); Handler (.NET)</li> - <li><strong>Action</strong>: Dispatcher (J2EE); part of Command (.NET)</li> - <li><strong>ActionForm</strong>: part of Command (.NET)</li> - <li><strong>JSP page</strong>: view</li> - </ul> - - <p>The Front Controller pattern does not specify the exact details of how the state should be managed, - or how a response should be handled after a view is rendered.</p> - </section> - <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> ! <p>Class <code>ActionForm</code> was initially designed as convenience object for input data. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> ! <p>Struts users came up with idea of pre-action (output action, setup action) and ! post-action (input action) dispatchers, so actions and JSP pages are interlaced, while ! action-relevant business data (green oval on the picture below) is located outside of an action:</p> ! ! <figure src="images/struts-pre-post-action.gif" alt="Pre- and Post- actions"/> ! ! <p>Each interactive JSP page is handled by at least two actions, and each action can render ! different pages. Because of many-to-many relationships between actions and JSP pages, ! web application becomes hard to maintain right from the start.</p> ! </section> ! ! <section id="codebehind"> ! <title>Struts Dialogs: code-behind and event handling</title> ! <p>Struts Dialogs makes development simpler by employing code-behind pattern similar ! to one used in ASP.NET framework, while keeping your investments into Struts.</p> ! <p>One of the ASP.NET concepts is the unity of page markup (ASPX) and business-related code (C# or VB). ! A page layout and widgets are defined in the markup, while page lifecycle and incoming events are ! handled by corresponding class file. This concept is especially easy to grasp for programmers ! of desktop applications:</p> ! <source> Before page is displayed, the code behind it initializes page data. ! After page is rendered, activating a widget in the browser window ! generates event, which is dispatched to a handler. defined in the class. ! </source> - <p>This pattern is implemented by Struts Dialogs with no changes to core Struts classes - or tag libraries. Moreover, it is improved, because Struts allows to define several - markup pages corresponding to one Java class.</p> ! <p>To use event-dispatching actions one should think in terms of <em>web resources</em>. ! Internet is about web resources, not about ! mere pages. A page is just a visualization of a resource in its current state at ! a given time. An address identifies a resource, not a particular representaion of it. ! A resource can be rendered differently depending on its state.</p> ! <figure src="images/struts-dialog-action.gif" alt="Dialog action"/> ! <p>In Struts Dialogs each resource is represented by one action (which consists of ! an action class and a form bean). Depending on resource state, an action can render ! one view or another. Views, corresponding to an action, are defined as JSP pages. ! Each JSP page belongs to one action only, which is called a <em>parent action</em>.</p> ! <p>Submission of a form from JSP page generates input event, which is handled by ! the page's parent action. Action class defines handler methods for every input event. ! Input events can be generated not only by submitting a form (POST), but also by ! clicking on a command link (GET). Think of enhanced <code>DispatchAction</code>.</p> ! <p>Direct linking from JSP page to another resource is possible, but discouraged. ! Instead, a command link should generate an event, which would be handled by parent action ! class. It is up to an action class to decide where to navigate next. This approach ! allows to define all navigation targets in the <code>struts-config.xml</code> file, ! having a clear representation of web application structure.</p> </section> --- 37,91 ---- </section> <section id="traditionalflow"> <title>Struts: traditional request/response cycle</title> ! <p>Class <code>ActionForm</code> was initially designed as convenience object for input data only. Struts guidelines recommend using ActionForm in request scope. This precludes from storing state information in ActionForm. It is up to developer to decide where to queue output data to, and where to store information between requests.</p> ! <p>Struts users came up with idea of <em>setup action</em> (output action, pre-action) and ! <em>submit action</em> (input action, post-action) dispatchers. This pattern is page-centric, ! actions and JSP pages are interlaced, business data is located outside of an action or a form bean:</p> ! <figure src="images/struts-pre-post-action-2.gif" alt="Pre- and Post- actions"/> ! <p>This approach is not perfect:</p> ! <ul> ! <li>Focused on a JSP page, not on a web resource in general.</li> ! <li>Every page of a web resource is likely to have its own pair of setup and submit actions. ! The picture above represents one JSP page and two actions associated with it. ! More pages, more actions, and things can quickly get out of control.</li> ! <li>One web resource is defined with several action mappings in the <code>struts-config.xml</code> file ! as well as with several Java classes.</li> ! <li>Output data is scattered in an uncontrolled manner throughout request and session scope.</li> ! <li>In case of error a page is redisplayed by a submit action, not by setup action; that opens a whole can of worms:</li> ! <ul> ! <li>If input data is invalid and autovalidation is turned on, a submit action class is never get called ! and cannot affect the workflow.</li> ! <li>One page is represented with two different URLs in the browser.</li> ! <li>An attempt to refresh a page after it has been redisplayed causes double submit.</li> ! </ul> ! <li>Success page often corresponds to a logically different web resource, this leads to a spaghetti code ! both in Java code as well as in struts-config.xml file.</li> ! </ul> ! </section> ! <section id="codebehind"> ! <title>Struts Dialogs: clean two-phase approach</title> ! <p>Struts Dialogs makes development simpler by using only two, or even just one action class per ! web resource. A web resource can be served with one setup/render action and one submit action. ! Submit action dispatches client event to a respective handler method, while render action ! selects a JSP page appropriate to current resource state, and fill out a form bean with ! output data.</p> ! <figure src="images/struts-dialog-action-2.gif" alt="Dialog action"/> ! <p>See <link href="http://wiki.apache.org/struts/DataEntryForm">Data Entry Form wiki page</link> ! for more discussion on Struts MVC.</p> </section> *************** *** 114,119 **** <p>Struts Dialogs does not introduce new classes to manage application state. ! Instead, it uses existing ActionForm class as a first-class stateful input/output object. ! In JSF terms, ActionForm now acts as a backing bean for JSP page. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> --- 94,99 ---- <p>Struts Dialogs does not introduce new classes to manage application state. ! Instead, it uses existing ActionForm class as a stateful input/output object. ! In JSF terms, ActionForm acts as a backing bean for JSP page(s) of a web resource. There is nothing groundbreaking in using session scope for ActionForm, or in storing output data in it. Online poll shows that about 60% of respondents use ActionForm for queueing output data.</p> *************** *** 132,228 **** </section> ! <!-- ! <section id="components"> ! <title>Component Development</title> ! <p>Struts Dialogs library allows building <em>web components</em> using Struts and JSP.</p> ! ! <p><strong>Web component</strong> is a server-side object, which is:</p> ! <ul> ! <li>stateful;</li> ! <li>can process input events;</li> ! <li>can render itself according to its current state;</li> ! </ul> ! ! <p><strong>Web control</strong> is a web component, which:</p> ! <ul> ! <li>can be embedded into a <em>master page</em>;</li> ! <li>can interact with master page and, optionally, with other web controls.</li> ! </ul> ! ! <p><strong>Web dialog</strong> is a special case of a web component, which has only one ! corresponding view.</p> ! ! <p>If the above definition sounds too vague and generic, think of a standard login form. ! It asks a user for name and password. If entered information is incorrect, login form ! redisplays itself along with error message. Login form can render itself, it has only ! one view, and it is stateful, because if you reload login page, it retains username and ! password. Therefore, login form is an example of a ! <link href="http://www.superinterface.com/strutsdialog/logindialog.html">login dialog</link>.</p> ! ! <p>Now consider a component which not only collects username and password, but also ! displays user's login/logout status. It is more complex than a login dialog, because ! it maintains two states and two corresponding views: "not logged in" and "logged in". ! This is a <link href="http://www.superinterface.com/strutsdialog/logincomponent.html">login component</link>. ! After user successfully logs in, login component displays page corresponding to "logged in" ! state, which shows user information. Whenever logged-in user navigates to this component, ! the latter shows user's information.</p> ! ! <p>What if we want to embed login component in a complex web page? For example, see ! how it is done by CollabNet on <link href="http://www.java.net">www.java.net</link> website. ! There is a small login form in the upper right corner of the home page. After you log in, ! the content of the form changes and shows your login name and logout button. This ! login form, embedded into master page, is an example of ! <link href="http://www.superinterface.com/strutsdialog/logincontrol.html">login control</link>.</p> ! </section> ! --> ! <section id="actions"> ! <title>Actions</title> ! <p>Most features of the Struts Dialogs library are available through use of different action ! classes. Most often you will be using DialogAction class, extending your specific action class ! from it.</p> ! ! <section id="selectaction"> ! <title>SelectAction: dispatches submit events</title> ! <p><link href="selectaction.html">SelectAction</link> is an enhancement of standard DispatchAction. ! It handles submit events and provides improved dispatching functionality. You can use this action ! class if you do not need full power of DialogAction, and all you want is just to dispatch submit ! events to handler methods. SelectAction has the following features:</p> ! <ul> ! <li>works uniformly with pushbuttons, image buttons and regular links;</li> ! <li>allows to set arbitrary button caption and to change it at runtime.</li> ! </ul> </section> ! <section id="dialogaction"> ! <title>DialogAction: Jack of all trades</title> ! <p><link href="dialogaction.html">DialogAction</link> is the main asset of ! Struts Dialogs library.</p> ! ! <p>DialogAction allows creating robust ! web components and web controls, which enhibit friendly user experience, ! react properly to Refresh, Back and Forward buttons, and do not cause implicit ! double submits or annoying POSTDATA messages.</p> ! ! <p><code>DialogAction</code> adds the following capabilities to event dispatching ! features of SelectAction:</p> ! <ul> ! <li>processing of initialization event;</li> ! <li>handling of error messages;</li> ! <li>view rendering;</li> ! <li>state handling (via corresponding action form);</li> ! <li>two-phase input processing (using POST-redirect-GET pattern)</li> ! </ul> </section> <section id="wizardaction"> ! <title>WizardAction: creates robust page flows</title> ! <p><link href="wizardaction.html">WizardAction</link> allows to create <em>web wizards</em>, ! similar to traditional desktop wizard dialogs. A wizard has predefined sequence of states, ! and is rendered with HTML forms, containing Back, Forward, Cancel and Done pushbuttons.</p> </section> <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> --- 112,155 ---- </section> ! <section id="dispatcher"> ! <title>Using action dispatcher</title> ! <p>Struts Dialogs 2.0 does not use custom versions of DispatchAction class anymore. Instead, it employs ! <link href="http://issues.apache.org/bugzilla/attachment.cgi?id=17724">ParameterListActionDispatcher</link> ! class renamed to EventDispatcher. This ensures that when ParameterListActionDispatcher is included ! in Struts 1.3.x core, you won't experience problems with same class names. The dispatcher class allows ! to use any Action class to handle user events.</p> ! </section> ! ! <section id="usecases"> ! <title>Samples</title> ! <section id="dispatchevent"> ! <title>Simple dispatch</title> ! <p><code>DispatcherSampleAction</code> in <code>net.jspcontrols.dialogs.samples.dispatch</code> ! package shows how to dispatch user events to an arbitrary action class. ! An event can be sent with GET or POST, with submit button or with link. Struts Cancel button ! is supported too.</p> </section> ! <section id="logincomponent"> ! <title>Web component with two views</title> ! <p><code>LoginxxxAction</code> class in <code>net.jspcontrols.dialogs.samples.login</code> ! package shows how to create a multi-state multi-view web component.</p> </section> <section id="wizardaction"> ! <title>Robust page flow</title> ! <p><code>SignupxxxAction</code> classes in <code>net.jspcontrols.dialogs.samples.signupwizard</code> ! package show how to create a <em>web wizard</em> similar to traditional desktop wizard dialog. ! A wizard has predefined sequence of states, and is rendered with HTML forms, containing Back, ! Forward, Cancel and Done pushbuttons. This sample shows how certain states can be skipped ! depending on wizard state.</p> ! <p>Notice, that web wizard is about component state and corresponding view, not about merely ! flipping pages.</p> </section> + <!-- <section id="crudaction"> <title>CRUDAction: simplifies CrUD operations</title> *************** *** 236,239 **** --- 163,167 ---- implement handling of both item list and CRUD operations as one web component.</p> </section> + --> </section> *************** *** 247,251 **** for details.</p> ! <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> to compare Struts Dialogs implementation with original Struts version.</p> </section> --- 175,179 ---- for details.</p> ! <p>See <link href="http://www.superinterface.com/mailreader">MailReader live demo</link> (version 1.x) to compare Struts Dialogs implementation with original Struts version.</p> </section> *************** *** 254,258 **** <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and ! <link href="http://www.superinterface.com/strutsdialog">live demos</link>.</p> </section> --- 182,186 ---- <title>Live Demos</title> <p>Each action class from Struts Dialogs library is illustrated with sample code and ! <link href="http://www.superinterface.com/strutsdialog">live demos</link> (version 1.x).</p> </section> *************** *** 264,265 **** --- 192,199 ---- </body> </document> + + + + Top Gear isn't running on Discovery anymore because they are in the process of creating an American version of the show, with a US studio, and new hosts. + + It will be interesting to see how it comes out, I'm not very optimistic that they'll have any luck recreating the humor of the British version but at least they'll give car prices in USD :) |