Release date: November 24, 2014
Backwards compatibility breaking changes
In published web service responses, you have to specify if empty elements are left out in the SOAP message (‘Optional’), or sent as nil (‘Nillable’). You cannot select both. The default behavior in legacy published web services was ‘Optional’; this checkbox is selected by default upon conversion. There is one special case: in Mendix versions 5.9 and before empty strings were sent as zero-length strings and the SOAP message contained . This implicit behavior has been removed; this means that empty strings are either completely left out as ‘Optional’ (not sent), or explicitly sent as
<element xsi:nil="true" /> (‘Nillable’).
If you are using published web services that send
empty string responses, the communication with your consumers could break. The recommended solution is to mark all relevant string members of the response type as Nillable, and to let the consumer re-import the updated WSDL definition.
If, instead, you want to retain the old behavior, you should convert an empty string into a zero length string yourself in the microflow that implements the web service operation; for instance with a ‘Change object’ action.
Developing hybrid mobile apps
This version offers improved support for hybrid mobile app development using PhoneGap / Cordova. We have extended our widget framework in such a way that widgets can be identified as using the PhoneGap APIs to access native device APIs. Widgets are visualized with an additional “hybrid mobile” icon and the advanced search option can be used to search for the use of these widgets in your project.
While developing a hybrid mobile app, you cannot simply test it in your mobile browser because the native widgets will not work. Some of these widgets will offer an alternative implementation for when they are running in an ordinary browser; others will not work at all. To see what your application will look like including the native capabilities, you can use the Mendix Developer App.
Via ‘View app’ in the toolbar or through the ‘Run’ menu, you can reach the hybrid mobile app dialog. It tells you where you can download the Mendix Developer app. More importantly, it shows a QR code that can be scanned with that app. This is a quick way to load your app into a PhoneGap / Cordova compatible environment.
Optimal page reloading
In this version we changed the way that the client behaves when navigating between pages. For pages having the same layout, widgets defined on that layout are not reloaded. Because of this, widgets inside layouts, such as menus or snippet contents, now keep their state as long as possible.
- Opening a select page in content is no longer allowed. This also applies to the “new” button in reference set selectors.
- Navigating in history now always rebuilds the page instead of restoring the old page.
- Custom widgets can now make use of the new history API.
- Suspend / resume is removed.
- Added placeholder divs which might break your custom stylesheets.
- Changes to the JS APIs:
- mx.ui.showLogin and mx.ui.hideLogin have their signatures changed
- mx.ui.getForm is now deprecated, use mx.ui.openForm instead
- Support for developing hybrid mobile apps using PhoneGap / Cordova. It is now possible to use native capabilities through hybrid mobile widgets. While developing a hybrid mobile app, you can directly view it in a PhoneGap / Cordova compatible environment using the Mendix Developer App. See the documentation for more information.
- Demo Users. You can add demo users to your project that allow you to quickly view your running application through the eyes of different users during development and while demoing your app. See the documentation for more information.
- Ticket 100752, 100554: A data view can listen to a list view, just as it was already possible to listen to a data grid.
- Added support for conditional visibility to all standard widgets (except reporting and navigation widgets). Any widget now can be marked as conditionally visible based on attribute value and/or on module role of a user.
- Optimal page reloading: when navigating between pages having the same layout, widgets defined on that layout are not reloaded. Because of this, widgets inside layouts, such as menus or snippet contents, now keep their state as long as possible. This feature takes into account layout inheritance, e.g. if users navigate from page A to page B, where page A uses layout PhoneLayout and page B uses layout PhoneLayoutCustomFooter, widgets on layout PhoneLayoutCustomFooter won’t be reloaded, because PhoneLayout is based on PhoneLayoutCustomFooter.
- If a data view doesn’t have an object to display, for instance because nothing is selected in a grid to which the data view listens, a custom message can be displayed. This message can be configured in the modeler. If no message is set, the data view will behave as before.
- List view items have a class name with an index number as a suffix. New items loaded by pressing the “load more” button now also get a unique index number.
- Search inputs in a grid now have the mx-name class on the surrounding div, instead of the input itself to make it consistent with normal inputs.
- Added the name, class and style properties to the page title widget.
- Mendix Business Server stacktraces are no longer obfuscated, so that tracing where an exception originates from is much easier.
- Nillable elements in Web services. Web services can be published with WSDL elements that are nillable (Nillable=”true”, see http://www.w3.org/TR/xmlschema-1/#xsi_nil). If ‘Nillable’ is selected next to an element, empty entities and attributes are sent with the ‘xsi:nil=”true”’ XML attribute in SOAP messages.
- In consumed web service requests there is a special case for WSDL elements that are both optional and nillable. In the ‘Call web service action’, we have added a radio button that lets you decide how you want to send empty entities or attributes: ‘Send as nil’ or ‘Leave out element’.
- Entities and attributes can be empty in App Services. You can select ‘Can be empty’ next to an entity, attribute or association in a ‘Published App Service’ document. In Mendix versions 5.9 and before, you could only select ‘Optional’ next to an element. This meant that if you left out an attribute element on the consumer side it got the ‘default value’ specified in the domain model of the app service provider. We changed this implicit behavior such that empty entities and attributes arrive as empty on the provider side. In legacy published app services, elements that were ‘Optional’ are automatically converted into ‘Can be empty’. App services that have been imported previously in <= Mendix 5.9.1 projects, can still connect to Mendix 5.10 providers. However if you update a published App Service (new version) or publish a new App Service from Mendix 5.10, these can only be (re-)imported (‘Add document’ -> ‘App Service’) in other 5.10 projects.
- ‘Convert custom header/body’ now disabled when there is no parameter to convert in call web service action.
- Timeouts can be set on consumed app services (Ticket 102811).
- Ticket 102625, 100551: Fixed an issue that caused Internet Explorer on Windows Phone not to be recognized as a mobile client.
- Ticket 203201: Fixed display order of popups when multiple popups are opened in a microflow.
- Ticket 203534: Fixed compatibility with old login widgets.
- Ticket 21719: Fixed an issue where entities from a grid were not passed as a list to a microflow when applying to a selection and passing entities from all pages.
- Ticket 203415, 203606: Fixed autogrow and placeholder of the text area widget in Internet Explorer.
- Make image urls absolute to support Phonegap apps.
- Ticket 203743: Upgrade dojo from 1.9.3 to 1.10.2.
- Ticket 203878: Fixed an issue, when urls for stylesheets added by mxui.dom.addCss was prefixed with baseUrl even if they already were absolute.
- Ticket 203690: When a tab page is conditionally visible, conditional visible items on the tab page are initially hidden.
- Ticket 203899: Fixed an issue, when conditional settings on a widget inside tab container or table were removed during a project conversion.
- Ticket 203905: Fixed an issue, when error was shown on a client while opening a page containing a collapsible group box with empty caption.
- Ticket 203291: Requests containing user passwords are no longer logged even if the log level is set to trace.
- Make paging button padding clickable in IE8.
- Do not show tab caption when hovering its content.
- Fix placeholder textarea and autogrow in IE.
- Login and logout triggers a page reload.
- Custom popup title is no longer displayed on widgets in that popup.
- Ticket 15481: Fixed issue where an Oracle restored backup does not contain the right primary constraint index. There was an issue with using Mendix with an Oracle database. When a backup of a Mendix Oracle database was restored, the restored database was not exactly the same as the original. This was caused by the way Mendix created primary keys and indexes for association tables. This could result in performance degradation and in errors if you synchronized the database with new versions of the application model. This version solves the abovementioned issue. As part of the solution, the primary keys of all cross tables (used for associations) will be recreated with a new index when synchronizing the database. Note: This can be time consuming and a lot of memory can be necessary on the Oracle server.
- Ticket 203123: Fixed StackOverflowError which occurs during the retrieval of data for data grids with owner and changedBy references.
- Fixed sending e-mail for the case when the MailcapCommandMap in javax.activation was already initialized through another code path (e.g. by calling a web service before sending an e-mail). Upon initialization of the e-mail module the necessary entries are now programmatically added to the MailcapCommandMap.
- Ticket 203527: Fixed an issue where sometimes user account objects are being deleted when an anonymous user is being ‘upgraded’ to a real user. This issue can only occur in rare cases when there are a lot of ‘upgrade’ sign-in attempts for the same user at the same time.
- Ensure the context classloader of custom Java actions is the classloader of the project bundle. This avoids issues with ‘userlib’ libraries that use constructions where the context class loader is used to load specific classes at runtime (e.g. the javax.mail library).
- Ticket 203862: Improved performance of the Mendix Business Server under heavy load. This particularly affects applications which process a lot of short transactions without database calls (e.g. processing incoming web service calls).
- Ticket 203399: Fixed exception message when a user with a duplicate user name is attempted to be saved.
- Ticket 102796: In some cases it is possible to create two domain model entities that map to the same database table in our internal mapping model. This resulted in an (unclear) error while synchronizing the database. We added an error in the Modeler for this particular case to prevent the run-time error.
- Ticket 203366: Fixed an issue where signing into MxID using a username that contains upper-case characters would cause problems connecting to the AppStore or Team Server.
- Ticket 204114: Fixed an error (security.policy file in use) that could occur in some cases when updating a running project from the Modeler.
- Ticket 100227, 22149, 100465: Fixed tickets that reported that no empty values could be sent over web services or app services.
- Ticket 203620, 203541: Fixed an issue where re-importing a WSDL with a different schema lead to a Modeler crash if an XML-to-Domain mapping was based on an old WSDL schema.
- Ticket 203668: Fixed an issue where renaming a consumed app service document or the module it was contained in, caused an exception when a location constant was used.
- Ticket 21687: Fixed an issue where changing published microflow return value from void to a list of objects gives an exception.
- Ticket 203909: Fix exception that occurred when converting a <= 5.8.1 project that contained excluded appservices.
- Ticket 203989: Fixed an issue where Domain-to-XML mappings were not mapped correctly in Import XML actions.
- Ticket 204119: Fixed an issue when re-importing in XML schema in the Modeler could cause an exception when generating consistency errors.
- Fixed being unable to set a draft version to consumable due to consistency error by not allowing user to create multiple draft in the first place.
- Fixed null pointer exception when selecting ‘insert template…’ from drop down list in call web service action.
- Fixed conversion issue (incorrect domain model being generated) when converting an imported pre-Mendix 5.4 app service.
- Throw runtime exception with proper message when XML-exporting a value that is null and not allowed to be null (either by being nillable or optional), instead of getting a nullpointer exception later in the process.
- Fixed exception which was thrown when validating ‘xml to domain model’ document after user made changes to ‘import web service’ document.
- Fixed mappings were not retained when user selected the same element in ‘xml to domain model’ document.
- Fixed an exception that occurred when a one-way operation was selected in the domain model import wizard.
- Fixed an issue in the UI where it was possible to select one-way operations in an import mapping (and when attempting to do so would throw an non-user friendly error).