Release date: September 8, 2016Download
- We fixed an exception that occurred in certain situations during the deployment of a widget with a microflow source which was contained in a list view or template grid. (Tickets 44263, 44209, 44182)
- Mendix Application Quality Monitor (AQM) support of Mendix 6.8.1 will not be available before September 13th. Mendix AQM users are advised to postpone the upgrade till then.
Release date: August 30, 2016Download
JSON in export mappings
Previously, we only supported flat JSON structures in export mappings, but now we also support complex JSON. This means that you can select nested JSON objects and arrays from JSON structures to use in export mappings. In addition, the optionality and nillability defined in the JSON structure is now taken into account when parsing domain model objects into JSON elements.
Behavior changed in export mappings
We changed the behavior for optional mapping elements in export mappings. When a mapping element is optional and its parent element is also optional but the parent element is not set in the mapping, the parent element will still be created. This new behavior avoids sending invalid XML.
From now on, the current Mendix Platform version is available as
mx.version in the client (previously it was available as
dojo.version). As a bonus, it now always contains the correct value, because we automated what was a manual process.
We improved the keyboard support so that pressing Esc now triggers a close action of the active pop-up window. This was already the case for dialog messages. (Ticket 205923)
We reduced the amount of requests needed to save data from the client to runtime. Previously, changes were sent separately from the actual commit or rollback. Now, the changes are integrated into the request. We also made sure that data is sent for a page in a single request (this used to involve separate requests for each data view).
For custom widget developers, this means that
mx.data.save is no longer needed to send changes to runtime. The changes are now included when calling
Hybrid app PIN configuration option
Do you remember in the last release when we saved you from the horror of having to log in to your hybrid app every time it restarted? For an encore, we’ve improved the PIN feature.
When we built this feature the last time around, we introduced an option enabling app users to decide whether they wanted to protect their login with a PIN. If they did not, they remained logged in automatically and indefinitely. Otherwise, they had to submit the PIN on every restart to retrieve their credentials.
In retrospect, we realized that leaving that decision up to end-users is probably not what you want when you’re building a Mendix app. Either you want to enforce PIN-login for all your users (like in a banking app) or you want to save them the effort altogether (like in a news feed).
As such, we’ve moved the check from the user’s login page to the
requirePin var of the hybrid app’s
index.html file. For details on how to access this file, see Customizing PhoneGap Build Packages in the Mendix Reference Guide. As you might expect, “true” will enforce a PIN policy and “false” will disable it altogether.
While we were at it, we also fixed the issue when the PIN functionality would not kick in when you were logging in once the client had already loaded (meaning, when you were logging in as a named user to an application that allowed anonymous users).
While implementing this update, we were forced to revert some of the changes made to our hybrid app package during the 6.7.0 release. As a result, all of the hybrid apps generated using our hybrid app package version 1.8.0 will no longer work in conjunction with Mendix 6.8.0. We have since updated our hybrid package, so this only applies to packages generated between July 29th and August 5th. If you created your hybrid app package between those dates, please generate a new one as soon as possible.
- We updated the
BouncyCastlelibraries to the newest signed versions. This ensures that signed providers are used and fixes the “JCE cannot authenticate the provider BC” error. (Ticket 466314)
- We changed the return type of an optimized retrieve and aggregate call in a microflow to be decimal instead of double when applicable. This issue caused a
ClassCastExceptionwhen a sum, minimum, or maximum was performed on a decimal attribute or an average was performed on any number attribute (in combination with a retrieve action that was optimized away). (Tickets 466583, 466816)
- We fixed an issue in
Retrieve-By-Paththat resulted in an incorrect result. This happened when an object via association was retrieved and the system determined the wrong resulting entity, causing the wrong object to be returned. This issue impacted scenarios regarding delete behavior and “retrieve by association.” (Ticket 465216)
- We now skip empty (null) attribute values when checking the uniqueness validation. Verification with other objects about to be committed and verification with objects existing in the database are skipped for these attributes. (Ticket 465946)
- We fixed the issue that caused a
$currentUservariable was evaluated in a microflow that was executed in a non-user session (system session). (Tickets 466900, 466901)
- We fixed some bugs that appeared only for pages with a configured URL. Some custom widgets (for example, HTML snippets) were broken, and using a list view resulted in 404 errors in the console.
- A Mendix community member on the forum reported that line breaks in text were ignored if the text contained parameters. Line breaks are now rendered properly, including in text with parameters.
- We made data views smarter and more effective, and they now re-render less often. For example, a nested data view that is independent from the outer data view because the nested data view has its own microflow source is not updated when the object of the parent data view is refreshed. However, we now recognize that a nested data view with a microflow source using a parent data view’s object as a parameter is actually dependent on it, and hence it should be reloaded after the parent object’s refresh. (Ticket 465605)
- Grid search fields with a drop-down menu are no longer reset to their default value when navigating back to a page. The values of search fields are also preserved when the grid is nested inside a listening data view and the selection of the listen target changes. (Tickets 464102, 465778, 466509)
- From now on, if a microflow instructs the client to refresh some objects and then close the pop-up window, the job of closing will be done first, before any refresh. Thanks to this change, fewer widgets have to react to the object refresh, so the performance and behavior are more predictable. (Ticket 360043)
- We fixed the grids that did not respond to the default button trigger when it was configured to show empty rows. (Ticket 357062)
- We fixed the bug where the reference set selector validation was not removed after its value changed. (Ticket 335743)
- We made the validations that run when executing an action consistent for page and microflow actions. The reference set selector will now also run the client validations before the on-change microflow is executed. This behavior can be configured in the on-change settings of the reference set selector. The items of a drop-down menu button, navigation list, and list view in addition to the images that open a page now also run the client validations before opening the page (this was already the case for microflow actions).
- We fixed the close-page instruction that did not work for pop-up windows when the microflow was executed by an item of a drop-down menu, list view, menu bar, simple menu bar, navigation list, navigation tree, or grid action button.
- We fixed the bug in the entity properties dialog box that would not show the changed attribute correctly in the Indexes tab after an attribute was changed that was also used in an index even when the changes were correctly applied. (Ticket 360036)
- We fixed the issue with renaming a microflow variable used in both an exclusive split expression and the condition for a breakpoint on that same exclusive split where the variable was not renamed inside the breakpoint condition, which resulted in an error. (Ticket 376176)
- We fixed the empty error dialog box that appeared when downloading a project from the Team Server if the authentication failed. (Ticket 41865)
- We fixed the importing of a JSON string with “null” as content.
- We fixed the null pointer exception that occurred when converting exposed names in the XML schema document.
- We fixed the deployment issue for the app service with basic authentication. (Tickets 466764, 466972)
- We can now consume REST response with Content-Encoding GZIP. (Ticket 466753)
- We fixed that on file upload web client feedback, such as showing a message or refreshing an object, was not propagated to the client.
Removed and deprecated features
We deprecated the
mx.data.save function and the
save form message from the client API. In previous versions,
mx.data.save was used to send changes to the runtime so they could be seen when committing the object or running a microflow. Now the changes are automatically sent to the runtime when needed. For compatibility, calling
mx.data.save will now just call the success callback.
A number of classes and methods will be removed in Mendix 7 (for more information, refer to the API Documentation). If you need a class or method for which no alternative is proposed, please share your use case with us so we can evaluate.
- If the checkboxes ‘Store owner’ or ‘Store changedBy’ are checked for non-persistable entities, unexpected behavior can occur when running the app. For example, runtime errors like “‘System.owner’ is not a persistable association” or “‘System.changedBy’ is not a persistable association” may appear. The work-around for this problem is to uncheck these checkboxes. This problem is solved in Mendix 6.10.