ADF application layout messed up after migration to 12.2.1 ... What might be the reason ?

Problem:

After migration of ADF application from 12.1.3 to 12.2.1 layout was messed up. In particular - component stretching was disordered.

Reason:

As ADF is going step by step to adaptive layouting, component stretching is optimized accordingly.
In version 11.1.1.7 new context parameter was introduced: oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONS. It basically tells what dimensions for stretchable components should be applied by default. For example if you set dimensionsFrom="children" to most top component in the hierarchy, all its children should inherit the same. But as a consequence, a legacy layout, which was organized with absence of this parameter can be disordered. In my case it happened that this parameter was forced in web.xml on migrattion to 12.2.1 and set by default to "auto". Previously we were not able to modify it and it was "parent" by default.

Solution:

Modify oracle.adf.view.rich.geometry.DEFAULT_DIMENSIONS parameter to "not set" or "parent" or just remove it from web.xml:



Useful links:

JBO-26041: Failed to post data to database during "Update"... What might be the reason?

Problem:

Exception during data save is thrown:
oracle.jbo.DMLException: JBO-26041: Failed to post data to database during "Update": SQL Statement "UPDATE...
It might be followed by similar to this one:
java.sql.SQLException: Fail to construct descriptor: Unable to resolve type "NVARCHAR2"...
Solution:

Check if  SQLType attribute of an entity/view object attribute being updated is correct. For example it can be set to "STRUCT" when "VARCHAR" is necessary.


Comment:

   Sometimes framework generates wrong type here. For example when adding new NVARCHAR2 column into entity, JDeveloper generates new custom datatype domain (i.e. Nvarchar2). Usually it is not necessary unless you really want to implement there something custom. But in most cases standard String fits well. So you tune newly added attribute to be of type String, everything then looks fine and works fine untill data update does not become necessary. And then you get exception noted above. Thats because Jdeveloper did not tune all necessary attributes for entity object attribute. It left SQLType unchanged and set to "STRUCT". So in this case after manual change to SQLType="VARCHAR" problem was solved. This applies either to entity and view objects.
   However this exception is a generic one and there can be a plenty of reasons to get it. But this is one of those. Check out if its not your case. Good luck!

JDeveloper version 12.1.3.0.0