+ <p> + For every <form-bean> tag in your <code>struts-config.xml</code> + file, you must have a corresponding Java class. The same holds true for + each <action-mapping> tag. + </p> +
Is this accurate? What something like: <action path="/Menu" forward="/pages/article/Menu.jsp"> </action> > <p> > + Please note that the i18n support in Struts is currently limited to the > + <b>presentation</b> of internationalized information to the user. > + Support for various Locale specific <b>input methods</b> is left up > + to the client device, which is usually a web browser. > + </p> > + What sort of input methods are we talking about here? Does "currently" imply that these might be supported by Struts in the near future. The other changes look great ;-) -Ted. [EMAIL PROTECTED] wrote: > > martinc 01/10/18 22:51:09 > > Modified: doc/userGuide building_controller.xml building_model.xml > building_view.xml introduction.xml > Log: > Applied some documentation changes suggested by Ed Burns, along with some > general corrections, and some corrections to the proposed changes. > > PR: 4140 > Submitted by: Ed Burns > > Revision Changes Path > 1.6 +17 -5 jakarta-struts/doc/userGuide/building_controller.xml > > Index: building_controller.xml > =================================================================== > RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_controller.xml,v > retrieving revision 1.5 > retrieving revision 1.6 > diff -u -r1.5 -r1.6 > --- building_controller.xml 2001/10/07 04:48:08 1.5 > +++ building_controller.xml 2001/10/19 05:51:09 1.6 > @@ -5,6 +5,8 @@ > <author>Craig R. McClanahan</author> > <author>Mike Schachter</author> > <author>Ted Husted</author> > + <author>Martin Cooper</author> > + <author>Ed Burns</author> > <title>The Struts User's Guide - Building Controller Components</title> > </properties> > > @@ -29,7 +31,8 @@ > extension of the <code>ActionMapping</code> class) that defines the >class > names and other information associated with each possible mapping.</li> > <li>Write the action mapping configuration file (in XML) that is used > - to configure the controller servlet.</li> > + to configure the controller servlet. This file is usually named > + <code>struts-config.xml</code>.</li> > <li>Update the web application deployment descriptor file (in XML) > for your application to include the necessary Struts components.</li> > <li>Add the appropriate Struts components to your application.</li> > @@ -206,11 +209,13 @@ > for each form bean, which has the following important attributes: > <ul> > <li> > - <b>name</b>: The name of the request or session level attribute >that this form > - bean will be stored as > + <b>name</b>: A unique identifier for this bean, which will be used > + to reference it in corresponding action mappings. Usually, this > + is also the name of the request or session attribute under which > + this form bean will be stored. > </li> > <li> > - <b>type</b>: The fully-qualified Java classname of your form bean > + <b>type</b>: The fully-qualified Java classname of your form bean. > </li> > </ul> > </blockquote> > @@ -235,6 +240,13 @@ > > </p> > > + > + <p> > + For every <form-bean> tag in your <code>struts-config.xml</code> > + file, you must have a corresponding Java class. The same holds true for > + each <action-mapping> tag. > + </p> > + > <p> > The <code>struts-config.xml</code> file from the example application >includes > the following mapping entry for the "log on" function, which we will use > @@ -623,7 +635,7 @@ > <code>WEB-INF/lib</code> directory. > </p> > <p> > - Next: <a >href="resources.html">Resources</a> > + Next: <a href="resources.html">Struts >Resources</a> > </p> > </section> > </section> > > > > 1.3 +16 -11 jakarta-struts/doc/userGuide/building_model.xml > > Index: building_model.xml > =================================================================== > RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_model.xml,v > retrieving revision 1.2 > retrieving revision 1.3 > diff -u -r1.2 -r1.3 > --- building_model.xml 2001/10/07 04:48:08 1.2 > +++ building_model.xml 2001/10/19 05:51:09 1.3 > @@ -5,6 +5,8 @@ > <author>Craig R. McClanahan</author> > <author>Mike Schachter</author> > <author>Ted Husted</author> > + <author>Martin Cooper</author> > + <author>Ed Burns</author> > <title>The Struts User's Guide - Building Model Components</title> > </properties> > > @@ -14,16 +16,18 @@ > <section name="2.1 Overview" href="overview"> > > <p> > - The application requirements document that you are using will likely > - have focused on the user interface to be created. However, you should >ensure > - that the processing required for each submitted request is also clearly > - defined. In general, the developer of the <i>Model</i> components will be > - focusing on the creation of JavaBeans classes that support all of the > - functional requirements. The precise nature of the beans required by a > - particular application will vary widely depending on those requirements, > - but they can generally be classified into several categories discussed > - below. However, a brief review of the concept of "scope" as it relates > - to beans is useful first. > + Many requirements documents used for building web applications > + focus on the <i>View</i>. However, you should ensure that the > + processing required for each submitted request is also clearly > + defined from the <i>Model's</i> perspective. In general, the > + developer of the <i>Model</i> components will be focusing on > + the creation of JavaBeans classes that support all of the > + functional requirements. The precise nature of the beans > + required by a particular application will vary widely > + depending on those requirements, but they can generally be > + classified into several categories discussed below. However, > + a brief review of the concept of "scope" as it relates to > + beans and JSP is useful first. > </p> > </section> > > @@ -84,7 +88,8 @@ > The Struts framework generally assumes that you have created an > <code>ActionForm</code> bean (that is, a Java class extending the > <code>ActionForm</code> class) for each input form required in your > - application. If you define such beans in your <code>ActionMapping</code> > + application. <code>ActionForm</code> beans are sometimes just called > + "form beans". If you declare such beans in your <code>ActionMapping</code> > configuration file (see "<a href="building_controller.html#config"> > Building the Controller Components</a>"), the Struts controller servlet > will automatically perform the following services for you, before > > > > 1.5 +11 -0 jakarta-struts/doc/userGuide/building_view.xml > > Index: building_view.xml > =================================================================== > RCS file: /home/cvs/jakarta-struts/doc/userGuide/building_view.xml,v > retrieving revision 1.4 > retrieving revision 1.5 > diff -u -r1.4 -r1.5 > --- building_view.xml 2001/10/07 04:48:08 1.4 > +++ building_view.xml 2001/10/19 05:51:09 1.5 > @@ -5,6 +5,8 @@ > <author>Craig R. McClanahan</author> > <author>Mike Schachter</author> > <author>Ted Husted</author> > + <author>Martin Cooper</author> > + <author>Ed Burns</author> > <title>The Struts User's Guide - Building View Components</title> > </properties> > > @@ -78,6 +80,13 @@ > </ul> > > <p> > + Please note that the i18n support in Struts is currently limited to the > + <b>presentation</b> of internationalized information to the user. > + Support for various Locale specific <b>input methods</b> is left up > + to the client device, which is usually a web browser. > + </p> > + > + <p> > For an internationalized application, follow the steps described in > the Internationalization document in the JDK documentation bundle for your > platform to create a properties file containing the messages for each > @@ -279,6 +288,8 @@ > <code><form></code> element, based on the specified >attributes. > It also associates all of the fields within this form with a session > scoped FormBean that is stored under the key <code>logonForm</code>. > + The Struts developer provides the Java implementation of this form > + bean, subclassing the Struts class <code>ActionForm</code>. > This bean is used to provide initial values for all of the input > fields that have names matching the property names of the bean. > If an appropriate bean is not found, a new one will be created > > > > 1.6 +73 -43 jakarta-struts/doc/userGuide/introduction.xml > > Index: introduction.xml > =================================================================== > RCS file: /home/cvs/jakarta-struts/doc/userGuide/introduction.xml,v > retrieving revision 1.5 > retrieving revision 1.6 > diff -u -r1.5 -r1.6 > --- introduction.xml 2001/10/19 05:15:16 1.5 > +++ introduction.xml 2001/10/19 05:51:09 1.6 > @@ -6,6 +6,8 @@ > <author>Mike Schachter</author> > <author>Larry McCay</author> > <author>Ted Husted</author> > + <author>Martin Cooper</author> > + <author>Ed Burns</author> > <title>The Struts User's Guide - Introduction</title> > </properties> > > @@ -16,6 +18,23 @@ > <section name="1.1 Preface: Forward into the Past! (or a brief history of >Struts)" href="preface"> > > <p> > + Before getting started, you should know the basics of the following > + technologies: > + </p> > + > + <ul> > + <li>The HTTP Request/Response sequence. The canonical source for this > + is <a href="http://www.ietf.org/rfc/rfc2616.txt?number=2616">RFC 2616 > + - Hypertext Transfer Protocol (HTTP/1.1)</a>.</li> > + <li>Java Servlets. A good place to start is the > + <a href="http://java.sun.com/products/servlet/technical.html#tutorials"> > + servlet tutorials</a>.</li> > + <li>JavaServer Pages (JSP). Again, a good place to start is the > + <a href="http://java.sun.com/products/jsp/technical.html#tutorials"> > + JSP tutorials</a>.</li> > + </ul> > + > + <p> > When Java servlets were first invented, many programmers quickly >realized that they were a > Good Thing. They were faster and more powerful that standard CGI, >portable, and infinitely > extensible. > @@ -60,51 +79,59 @@ > <section name="1.2 The Model-View-Controller ('MVC') Design Pattern" >href="mvc"> > > <p> > - In the MVC design pattern, application flow is mediated by a central >Controller. The > - Controller delegates requests to an appropriate handler. The handlers >are tied to a Model, > - which act as an adapter between the request and the Model. The Model >represents, or > - encapsulates, an application's business logic or state. Control is >usually then forwarded > - back through the Controller to the appropriate View. The forwarding can >be determined by > - consulting a set of mappings, usually loaded from a database or >configuration file. This > - provides a loose coupling between the View and Model, which can make an >application > - significantly easier to create and maintain. > - </p> > - > + In the MVC design pattern, application flow is mediated by a > + central Controller. The Controller delegates requests - in our > + case, HTTP requests - to an appropriate handler. The handlers > + are tied to a Model, and each handler acts as an adapter > + between the request and the Model. The Model represents, or > + encapsulates, an application's business logic or > + state. Control is usually then forwarded back through the > + Controller to the appropriate View. The forwarding can be > + determined by consulting a set of mappings, usually loaded > + from a database or configuration file. This provides a loose > + coupling between the View and Model, which can make an > + application significantly easier to create and maintain. > + </p> > + > </section> > > > <section name="1.3 Struts Framework Overview" href="overview"> > > - <p> > - True to the Model-View-Controller design pattern, Struts applications >have three > - major components: a servlet controller, JavaServer pages (the "view"), >and the > - application's business logic (or the "model"). Let's step through how >this all > - fits together.</p> > - <p> > - The controller bundles and routes HTTP requests to other objects in >the framework, > - including JavaServer Pages. When initialized, the controller parses a >configuration > - resource file. The configuration resource defines (among other things) >the action > - mappings for the application. The controller uses these mappings to >turn HTTP > - requests into application actions. > + <p> > + True to the Model-View-Controller design pattern, Struts applications >have three > + major components: a servlet controller, which is provided by Struts >itself, > + JSP pages (the "view"), and the application's business logic (or the > + "model"). Let's step through how this all fits together. > + </p> > + > + <p> > + The Struts controller servlet bundles and routes HTTP requests to other > + objects in the framework, including JavaServer Pages and > + <code>org.apache.struts.action.Action</code> subclasses provided by the > + Struts developer. When initialized, the controller parses a >configuration > + resource file. The configuration resource defines (among other things) > + the action mappings for the application. The controller uses these > + mappings to turn HTTP requests into application actions. > </p> > > <p> > At a minimum, a mapping must specify (1) a request path and (2) the >object > - type to act upon the request. The action object can handle the request >and respond > + type to act upon the request. The Action object can handle the request >and respond > to the client (usually a Web browser), or indicate that control should >be forwarded > to another action. For example, if a login succeeds, a loginAction >object may wish > to forward control to a mainMenu action. > </p> > > <p> > - Action objects are linked to the application's controller, and so have >access > - to that servlet's methods. When forwarding control, an object can >indirectly > + Action objects have access to the application's controller servlet, and >so have access > + to that servlet's methods. When forwarding control, an Action object >can indirectly > forward one or more shared objects, including JavaBeans, by placing >them in one > of the standard collections shared by Java servlets. > </p> > > <p> > - An action object can create a shopping cart bean, add an item to the > + An Action object can create a shopping cart bean, add an item to the > cart, place the bean in the session collection, and then forward >control to > another action -- that may use a JSP to display the contents of the >user's cart. > Since each client has their own session, they will each also have their >own > @@ -115,34 +142,37 @@ > <p> > JavaBeans can also be used to manage input forms. A key problem in >designing > Web applications is retaining and validating what a user has entered >between > - requests. With Struts, you can easily store the data for a input form >in a form > - bean. The bean is saved in one of the standard, shared context >collections, > - so that it can be used by other objects, especially the action object. > + requests. With Struts, you can define your own set of form bean >classes, by > + subclassing <code>org.apache.struts.action.ActionForm</code>, and >easily store > + the data for an input form in these form beans. The bean is saved in >one of the > + standard, shared context collections, so that it can be used by other >objects, > + especially the Action object. > </p> > > <p> > The form bean can be used by a JSP to collect data from the user ... by >an > - action object to validate the user-entered data ... and then by the JSP >again to > + Action object to validate the user-entered data ... and then by the JSP >again to > re-populate the form fields. In the case of validation errors, Struts >has a > shared mechanism for raising and displaying error messages. > </p> > > <p> > - A Struts form bean is defined in the configuration resource and linked >to an action > - mapping using a common property name. When a request calls for an >action that uses > - a form bean, the controller servlet either retrieves or creates the >form bean, and > - passes it to the action object. The action object can then check the >contents of > - the form bean before its input form is displayed, and also queue >messages to be > - handled by the form. When ready, the action object can return control >with a > - forwarding to its input form, usually a JSP. The controller can then >respond to > - the HTTP request and direct the client to the Java Server Page. > + A Struts form bean is declared in the configuration resource, defined >in a Java > + source file, and linked to an action mapping using a common property >name. When > + a request calls for an action that uses a form bean, the controller >servlet > + either retrieves or creates the form bean, and passes it to the Action >object. > + The action object can then check the contents of the form bean before >its input > + form is displayed, and also queue messages to be handled by the form. >When > + ready, the Action object can return control with a forwarding to its >input > + form, usually a JSP. The controller can then respond to the HTTP >request and > + direct the client to the Java Server Page. > </p> > > <p> > The Struts framework includes custom tags that can automatically >populate > fields from a form bean. The only thing most JavaServer Pages need to >know > about the rest of the framework is the proper field names and where to >submit > - the form. Components like the messages set by the action object can be >output > + the form. Components like the messages set by the Action object can be >output > using a single custom tag. Other application-specific tags can also be >defined > to hide implementation details from the JSPs. > </p> > @@ -162,11 +192,11 @@ > </p> > > <p> > - For the simplest applications, an action object can handle the business >logic > - associated with a request. However, in most cases, an action object >should pass > + For the simplest applications, an Action object can handle the business >logic > + associated with a request. However, in most cases, an Action object >should pass > the request to another object, usually a JavaBean. To allow reuse on >other > platforms, business-logic JavaBeans should not refer to any Web >application > - objects. The action object should translate needed details from the >HTTP request > + objects. The Action object should translate needed details from the >HTTP request > and pass those along to the business-logic beans as regular Java >variables. > </p> > > @@ -214,8 +244,8 @@ > </p> > > <p> > - Large-scale applications will often represent the business logic actions > - that are possible in a system as methods that can be called on the beans > + Large-scale applications will often represent the set of possible > + business logic actions as methods that can be called on the beans > maintaining the state information. For example, you might have a shopping > cart bean, stored in session scope for each current user, with properties > that represent the current set of items that the user has decided to > > > -- Ted Husted, Husted dot Com, Fairport NY USA. -- Custom Software ~ Technical Services. -- Tel +1 716 737-3463 -- http://www.husted.com/struts/ -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>