This directory is a whiteboard area for working on new material related to the adoption of WebWork2 as Action2. While WebWork2/Action2 is passing through the incubator, this material is being based on OS WebWork 2.2.2. Note this area is intended for *NEW* material only. Existing material must enter Apache Struts through the incubation process. At this time, the material is being built directly with IDEA, and a standard build file is not yet available. For the time being, the dependencies required to build this material may be downloaded here: * http://people.apache.org/~husted/sandbox-action2-lib.zip For more about the materials under construction, visit * http://www.StrutsUniversity.org/Application+Use+Cases ---------------------------------------------------------------------------- APPS Under the apps folder, two applications are now being constructed * Cookbook, and * Mailreader The goal of the Cookbook is to combine the WebWork 2.2.2 Showcase with the Struts 1.3 Examples and the Struts 1.3 Cookbook. The Cookbook demonstrates working code and provides links to display the code for each example. The goal of the Mailreader is to provide a simple application that demonstrates best practices. The Mailreader is a simple parent/child workflow, where visitors can register with the application and the create child records related to the user's master account. Other new applications may include the iBATIS JPetstore example, which was based on Struts Action 1. Other WebWork example applications, like the shopping cart, could also be kept here. ---------------------------------------------------------------------------- STATUS - COOKBOOK * Several examples have been added. * The "Select" example could be streamlined to use one example of each Select control. * Other examples can be added at will. ---- Hmmmm ... * Are the validator objects singletons? ---- Example idea jar * See http://www.niallp.pwp.blueyonder.co.uk/strutsvalidatorextends.html for some validation use cases. * http://wiki.opensymphony.com/display/WW/Cookbook * Display an unexpected exception on an error page. ** What's the conditional logic using JSP tags? * "param->prepare->param interceptor pattern" ** http://forums.opensymphony.com/thread.jspa?threadID=23750&tstart=0 * Using proxy objects to restrict access to domain objects ** http://forums.opensymphony.com/thread.jspa?threadID=23750&tstart=0 * Using an authentification interceptor. ** * Overriding a bundled UI Tag. * Creating a custom UI Tag. * Canceling a form with client-side validation. ** (Should there be a "validate" attribute to generate the "form.onsubmit=null" script?) ** (Should ActionSupport provide "public String cancel() {return CANCEL;} ? ** (Should we support action="!cancel" to be consistent with form tag.) *** (Trying !cancel in WW2.2.2 carries cancel over to the next action.) * Setting form type to "POST" ** (Should POST be the default?) * Switching to SSL after login ** http://forums.opensymphony.com/thread.jspa?messageID=11452Ⲽ * Customizing pages for multiple installations across multiple releases ** http://forums.opensymphony.com/thread.jspa?messageID=23991嶷 ---- Examples that might involve new development * How do we set checkboxes false (on uncheck)? ** http://forums.opensymphony.com/thread.jspa?threadID=23601&tstart=0 * How to set the focus on a form field? ** http://forums.opensymphony.com/thread.jspa?threadID=23777&tstart=0 * Populating POJO that implements an Interface ** http://forums.opensymphony.com/thread.jspa?threadID=23750&tstart=0 * Wizard ** http://forums.opensymphony.com/thread.jspa?threadID=23778&tstart=15 * DRY UI Tags ** http://forums.opensymphony.com/thread.jspa?threadID=24140&tstart=0 * Default package names ** Allow a default package name to be set for Action classes so that .MyAction could resolve to org.mycorp.myapp.mypackage.MyAction * Proxy Result ** http://forums.opensymphony.com/thread.jspa?threadID=23621&tstart=0 ---------------------------------------------------------------------------- STATUS - MAILREADER * Feature complete, but some marginal issue remain. * Could use a screen shot next to the code for each page. ---- Welcome Nominal + Logon - Cancel + Register - Cancel ---- Logon Nominal + Cancel + Reset - Submit (invalid) + Submit (incorrect) + Submit ---- Registraton Edit Nominal + Cancel + Reset + Submit (no change) + Submit (change) + Submit (invalid change) Issues * When client-side validation is enabled, messages stack up on multiple invalid submits. Sever-side only OK. *** This doesn't happen with Logon page, only Registration and Subscription (!?)( *** Asked on forum - http://forums.opensymphony.com/thread.jspa?threadID=23871&tstart=0 ---- Subscription Edit Nominal + Cancel + Save (no changes) + Save (changes) ---- Subscription Delete Norminal + Cancel + Confirm ---- Subscription Add + Cancel + Submit + Submit (bad data) + Double submit ---- Logoff Nominal + Logoff - Refresh + Logoff - Skip to Registeration page ---- Registration Create Nominal + Cancel + Reset + Submit (no data) + Submit (invalid data) + Submit (data) + Submit (duplicate data) + Double submit ---- Locale change + Change locale from Welcome page. + Buttons and Labels reflect changed locale ---- Tour * In progress ---- Error + Need to log and present unexpected exceptions Issue * If the error page is fired by a global exception handler, is the exception going to be logged. Do we need to use a chain result to an action that would log the exception? What would be the Java syntax? * It would be nice to omit the message markup if there is not message. ** http://forums.opensymphony.com/thread.jspa?threadID=7480&messageID=16618#16618 Things that didn't work: ---- ApplicationListener * Another approach would be to instantiate the database via Spring. ---- VerifyResourcesInterceptor * Could use a better test to detect whether message resources loaded ====