|
Web Application Checklist
| [Previous] [Main] |
Java Server Faces Web Application - Checklist
Adding a Web Client to JGuiGen
July 2004
|
|
| Note 1: It would be nice the buttons in the main frame work were all attached to a general PropertyChange listener that I could hook into regardless of the application in the main body content portion of the screen. The idea here is to have the menu navigation buttons in the menu part of the screen (in a navigation Tile for example) notify my application that it should check for unsaved changes when the user tries to navigate somewhere else on the site without saving.
|
| Note 2: Accessibility issues (A11Y) - These are important to me so I will spend some time on them. Here is a partial list of some items I will be looking at.
|
| - | Invisible links to main content section of web pages (the blind users can just over banners and navigation stuff)
|
| - | Alt= "??" on all graphics navigation buttons
|
| - | Required fields start with an * (and perhaps more)
|
| - | Tooltips available everywhere
|
| - | Will try hot keys - they are supposed to be available
|
| - | Making sure pages serialize well for voice browsers
|
| - | Using OutputLabels instead of OutputText for prompts to editable fields.
|
| - | Make sure data tables have the internal Ids so that blind users can know where they are.
|
| - | Make sure custom components with multiple parts make sense to voice browsers. (e.g. a date components with three parts - a day, a month and a year input fields - might sound like a data input fields and two unknown input fields to a blind user.
|
| Note 3. I am interested in Business Applications and there are about a dozen standard components that need to be dealt with gracefully and consistently. The ones that JGuiGen - Rich Client deal with are listed here. I will try to do most of these in the JSF version.
|
| a. | Tree component - Bergsten p 283
|
| b. | Tabbed Pane - Geary 401
|
| c. | Date/Calendar - Kerniawan - p 308
|
| d. | Time
|
| e. | Phone number
|
| f. | SSN
|
| g. | Credit Card - Geary
|
| h. | Email address - Jakarta commons
|
| i. | State - e.g. Florida
|
| j. | Postal Code - generic
|
| k. | Currency
|
| l. | Decimal number (fixed number of decimals)
|
| m. | Integers (positive only or positive/negative)
|
| n. | Text - Validated against a regex
|
| o. | Text - validated against a pattern (e.g. JFormattedTextField)
|
|
|
| a. | Browser Safe
|
| b. | OS Safe
|
| c. | Screen Resolution safe (resizes if user wants to)
|
| d. | Uses and saves user preferences
|
| e. | CSS on/off safe
|
| f. | Cookies on/off safe
|
| g. | Firewall safe
|
| h. | Proxy safe
|
| i. | W3C compliant
|
| j. | Graphics on/off safe
|
| k. | Multi-user safe
|
| l. | Thread safe
|
| m. | Bobby - compliant (Accessible)
|
| n. | I18N - labels, currency, dates, etc.
|
| o. | JavaScript on/off safe
|
| p. | Ability to send messages to developer/maintainer
|
| q. | Easy to learn and use
|
| r. | Keyboard shortcuts for power users and handicapped
|
| s. | Data safe - low corruption rate, backups automatic.
|
| t. | Multiple sessions by one user at the same time safe
|
| u. | Safe for other applications on the user's PC
|
| v. | Safe for other applications on the server.
|
| w. | Scalable - within reason
|
| x. | Portable - easy to port - not completely portable from start.
|
| y. | SQL backend - easy to port
|
| z. | Hacker resistant
|
|
|
| - | A main application class for each edit screen is also instantiated. It takes a reference to the Model class as a parameter. This class creates a dataRow bean and calls the TableModel class to obtain data to fill the dataRow bean.. It calls the View class. The main class is part controller and part model by most MVC definitions.
|
| - | A View class takes Model and the dataRow bean is parameters. It contains the instantiation of Swing components, a method to take data out of the bean and put it into the appropriate components, a call to a Layout class and methods to create a new dataRow bean and fill it with the data from the components. The listeners for actions like "Save" and "Add" are here. They activate methods in the main class.
|
| - | The main class has Save methods, Add methods, etc. These do conversion and validation and checking for changes in the various components. It does this by comparing the original dataRow bean and the new dataRow bean created by the View class. If there are no errors it calls the TableModel class to update the SQL table. It then regenerates the dataRow bean and returns control to the View class. The dataRow bean has a validation methods for each property. Some of these always return "true", others do validations like range checking and return a true or false based upon the results of the test.
|
| - | TableModel class contains updateTable(), InsertTable() and queryTable methods to access the SQL backend.
|
| - | Layout class - lays out the components being used in the View class. (This is a separate class here to help keep hand tweaking if the application is generated a second, third or 30th time.)
|
| - | Other support classes - a QBE screen, a report system, special components (like a JboundedTextField()).
|
|
|
| It is possible at this point the with a rewritten Model class and View class, the rest of the application will be able to run in both environments.
|
|
|
| 1. | Auto-email to developer/maintainer when certain classes of errors occur.
|
| 2. | More on Accessibility
|
| 3. | Adding the name of the component to the error list so that the global error messages are linked to the component that generated the error.
|
| 4. | Help screens
|
| 5. | More on security
|
| 6. | Using and Saving User Preferences
|
| 7. | Allowing a user to select columns from a table and see a scrolling list of just those columns (in the order the user wants them.)
|
| 8. | An easy ad-hoc web based report system.
|
| 1. | Core Java Server Faces - David Geary and Cay Hosrtmann - listed above as "Geary" - best by far.
|
| 2. | Java Server Faces Programming - Budi Kurniawan - dated and confused
|
| 3. | Java Server Faces - Hans Bergsten - some good ideas - tough to read
|
| 4. | J2EE Tutorial at Sun Site - A review for those who already know the material. Not referenced once above
|
|
|
| 5. | J2EE Design and Development - Rod Johnson - a little dated - excellent coverage
|
| 6. | Accessible Web Design - Jim Thatcher et al - a little dated - Very Good reference. Really helps you see how browsers for the blind convert you HTML page into a linear format.
|
| 7. | Java Open Source Programming - Joe Walnes et. al. Very good resource.
|
| 8. | Java Server Pages Cookbook
|
| 9. | Enterprise J2EE Programming on a Budget (more Open Source references)
|