By Steve Muench on Jan 24, 2014
In addition to Oracle ADF, if you love Vincent van Gogh, you can help make history. I've blogged how on my personal blog:
I updated the sample application for my example #161, which illustrates how to ensure the "Row Changed by Another User" lost-update protection feature gives its warning even when AM pooling is disabled or the AM undergoes passivation/activation before encountering the row that another user has changed. I updated the sample to feature the standard "ADF Form" navigation buttons. When adding these navigation buttons, JDeveloper design time does the following:
When clicking (Next) or (Previous), the partialSubmit="true" causes the page to undergo a partial page refresh rather than a full page request. On the web server, this translates then into a call to the related RowSetIterator's next() or previous() method to adjust the current row pointer in the row set iterator. The new current row has different values for the view row's fields than the previous row, and the ADFBC and ADFM data binding and ADF Faces framework layers cooperate when the ChangeEventPolicy="ppr" to automatically translate the change in current row and change in data value into appropriate additions of UI components to the ADF Faces partial target list. This ensures that during the HTTP roundtrip in which the row is navigated and/or the field values are changed, that the partial page request response returned with the same HTTP response includes the "delta" update instructions that the current ADF Faces JSF page needs to "surgically" refresh just certain elements in the page to update their values on the screen.
Previously the example's hidden field bound to the ObjectVersionNumber was using the <h:inputHidden> tag, which does not support the Auto-PPR behavior. This lead to its having the value of the ObjectVersionNumber of the original row displayed in the form when performing these partialSubmit="true" row navigations, as opposed to getting automatically updated to reflect the ObjectVersionNumber value of the current row being navigated to. This updated example changes the <h:inputHidden> to use the <tr:inputHidden> instead, which does support the Auto-PPR.
The side effect of having the <h:inputHidden>'s value staying "stale" was that upon row navigations, ADF Faces interpreted the value of the "stale" ObjectVersionNumber as an update to the navigated-to row's ObjectVersionNumber field, causing the row to get dirtied as if a user had modified a value in the row. The updated example works as you would expect.
Grant blogs about a free learning event next Tuesday, the Virtual Developer Day. Educate yourself on topics like ADF, Mobile, BI, Portal and BPM all without leaving your comfortable desk chair.
Starts at 9am GMT
If you have kids and macs and you use Parental Controls, for the moment don't upgrade to 10.8.2 Mountain Lion, the feature is broken after upgrading. I had to disable parental control completely on my daughters' macs in the meantime...
After hundreds of parents have complained about problems in this discussion thread on Apple's forums, finally the tech press notices:
For the moment there doesn't seem to be a workaround. Ugh.
UPDATE: Apple announced a 10.8.2 Supplemental Update this afternoon that claims to resolve the problem.
I'm very happy to finally be able to talk about this. A long time coming, the press release is finally out:
Oracle ADF Essentials is a free packaging of core technologies from the Oracle Application Development Framework that can be used to develop and deploy applications that include ADF Business Components, ADF Controller, ADF Binding, and ADF Faces Rich Client Components without incurring licensing costs. Both Oracle JDeveloper and Oracle Enterprise Pack for Eclipse provide visual and declarative development experience for using it. Oracle ADF Essentials comes with specific instructions and certification for deploying applications on the open-source Glassfish server, but the license is not limited to that server.
I've been using a new web application called Workflowy for the past month and now can't live without it. It gives you a simple, generic way to manage a tree of "todo" items. It lets you organize "todo" items in
a huge, searchable, taggable, drag-and-drop-reorderable tree, with
no other features to get in the way.
By using their advanced search filtering, I can enter a search of "
is:complete last-changed:7d" to filter the
outline to only show what I did in the last week (useful for
Wanted to share this useful tidbit in case it might help anyone else.
I've uploaded four new examples for your learning pleasure:
The JDeveloper/ADF product management team is running a new survey to capture additional user feedback on your experience with our tool and framework.
We'd really appreciate if you could find 5 minutes out of your busy day to and let us know what you think:
If you or a client has encountered Bug 10208604 "Conflict Detection Not Working After AM Passivation/Activation", I've posted example # 161 that illustrates a technique to leverage the conflict detection mechanism added for stateless web service row edits (via Enhancement Request 5738772 "Conflict Detection Mechanism Required in ADF BC Service Layer") to solve the problem in a robust way. The solution involves: