By Ultan O'Broin-Oracle on May 12, 2013
One UX question that seems comes up now and then with ADF apps is how to handle when users navigate away from an application page that has unsaved or uncommitted changes on it. This might happen when users decide to navigate to another location to look something up without opening a new tab, or when they use the browser back button to try go back to a previous step in a task.
Now, it is not an unreasonable these days that users would want to navigate using the back button. But this consumerized IT expectation is not something that our ADF apps can accommodate. A combined productivity hit and the high value of enterprise data means that users need to be warned of the implications of navigating using the browser back button or loading a new page, if they continue.
There is another UX implication should users choose to use the back button. Because of how our task flows are constructed they will be taken back to the last URL, which is not necessarily the last step in their task flow if the URL hasn't changed within the flow. So there is an unpredictable outcome to where users will be taken within the application.
Using the backspace key can have the same result as using the browser back button, because it most browsers the backspace key is mapped to the back button.
One handy way to warn users about unsaved and uncommitted changes on navigating away from their page is to use the af:document tag's uncommittedDataWarning property. This is explained, along with use cases, and other great patterns on on the Oracle Application Development Framework Functional UI Patterns & Best Practices website.
Shay Shmeltzer also has a great video of how the unsaved or uncommitted changes warning is implemented on his blog.
What ADF is providing here is a hook into a warning message which comes from the browser, not from ADF itself, so the phrasing of the message in the dialog box is not something developers can control. So, although users can informed of about unsaved changes being lost should they continue, the unexpectation navigation issue is not mentioned (this is something being worked on by Applications UX).
Check out the implementation of the unsaved and uncommitted data warning and the other ADF functional patterns and best practices on the site too. This is a great resource for productive development used along with the ADF Faces Rich Client User Interface Guidelines and Oracle Fusion Applications UX design patterns.