Release date: April 10th, 2017
- We fixed a known issue from Mendix 7.1.0 and from now on, offline mobile apps work offline.
- We fixed the “synchronize on save” property of the
SaveChangesaction for offline mobile apps.
- When using the
addRefreshObjectListFeedbackJava APIs, list views and data grids are no longer redundantly refreshed. Such refreshes should be performed only by
Release date: March 29th, 2017
Advanced conditional visibility/editability
For a long time, you have been able to hide or disable parts of your UI conditionally based on the data displayed. This is an essential tool for building great user experiences. For example, you don’t want your end-users in the status of “cat-hater” (yep, such people exist) to see an input called “number of cute kittens,” because that would just be rude. But many of you have encountered that in practice, conditions tend to get more complex. What if you want to show a “feed the kittens” reminder only in the afternoon and only to users who have fewer than 3 kittens? Previously, you had to fall back on conditions based on virtual attributes. Now, we have something more beautiful.
We are introducing conditional visibility/editability based on expressions!
So when you feel that the power of existing attribute-based conditions is not enough for a specific UI element, the expressions can come to the rescue. You can use the language and the expressiveness that you are already used to from microflows, such as more complex constructions like
if then else, operations on multiple attributes (of a context object available as
$currentObject), more complex comparisons like
<, and tokens like
[%CurrentDayTime%]. The expressions are evaluated client-side without any extra network communication, and they are re-evaluated immediately as data is changed. This means that your UI is always correct and responsive.
This is the first release of client-side expressions, so we don’t yet have full feature parity with the expressions in microflows. Not all of the functions are supported, and you cannot use associations yet. But we are working on it — stay tuned, and tell us what features you are missing the most.
- Currently you can configure expression-based conditional visibilitity/editability on any element. But this will be ignored on elements outside of a data container: on data views, list views, and template grids. Note that you still cannot configure attribute-based conditions on such elements.
In Mendix 7.0, we introduced some smart limitations on how much state is transferred over the network between the client and the runtime. Don’t ask us how, but we are shrinking this size even more. Some apps now transfer even less data in Mendix 7.1 than they did in Mendix 6.10!
- As we moved the state to the client, all operations related to state handling (such as figuring out which objects you may need along with the microflow calls) were moved to the client as well, which added calculation/CPU overhead to the client. With this release, we have improved that to make sure you won’t notice a difference in your browser, even if you have hundreds of objects in your state!
- We fixed the issue with the “No read only changes hash found” exception being thrown when sending changes from the client to the server for objects that have security access rules with XPath constraint conditions. When the evaluation of this condition changed during a user’s session, a hash was required, which was not the case before. To prevent this, we now always send a hash for object members that have a conditional security rule.
Actions are on fire! In Mendix 7.1, we are introducing a new one — the sign-out action. From now on, a user can log out not only from a stand-alone button, but from menus, navigation lists, and everywhere else you can define an “on click” event. The stand-alone Sign Out buttons have been automatically converted to Action buttons.
- We added input grouping and proper label reference in the radio button groups.
- We added
aria-labelto the button in a date picker input.
langproperty for pages is set based on the current user language. It helps software like screen readers and automatic translators work properly with Mendix applications.
REST consume improvements
We further expanded the options you have when using the consume REST microflow action. First, we added the possibility of using a proxy when consuming a REST service. Second, we made it possible to specify a timeout for the call as well. Subsequently, we added two new functions to use in your microflow expressions:
UrlEncode can come in handy when constructing the URL of the REST end-point you are calling (to pass query paramaters, for example). Finally, we added the new method executeHttpRequest() in the public API to make it easier to execute HTTP requests from Java Actions.
- We fixed the downloading of remote files when the static resources from a disk option is enabled for hybrid apps. (Ticket 49617)
currentUseris now always available in the microflow scope while executing a microflow. (Ticket 44116)
First day of the weekto
Default (based on locale)now results in the correct week numbers (based on the locale). (Ticket 44259)
emptyas a default for
parseDecimal([..])no longer returns
IllegalArgumentException. (Ticket 44292)
- Removing items from a list using a list containing duplicates no longer throws
IndexOutOfBoundException. (Ticket 44966)
- We fixed the issue in which empty loops inside microflows can throw an error in the Modeler during deployment. (Tickets 50683, 50802)
- If a decimal attribute did not have write access and was changed, this led to an error with the message, “Attempt to illegally change a value for object with id %id%!”. We have now fixed the hash calculation of decimal values.
- We fixed the issue where changes for an object were not available inside a microflow. (Ticket 50650)
- We fixed the issue where disabling the keep-alive setting (setting
false) resulted in a lot of
keep-aliverequests. (Ticket 51086)
- When handling an incoming message in a consumed web service, white spaces are no longer trimmed by default. (Ticket 404935, 47615)
- Renaming variables no longer cause errors in the Modeler when using a REST service.
- We removed the security vulnerabilities in Java libraries. (Ticket 49435)
- We fixed the local name being incorrectly determined in the case of inheritance. (Ticket 49990)
- We fixed the case where
maxOccurswas set incorrectly in a published web service when using both generalization and self-reference. (Ticket 466412)
- We now show a consistency error when you attempt to expose a reference set in an OData resource. (Ticket 44223)
- A sample SOAP request in the documentation of a web service operation now shows the correct target name space. (Ticket 46759)
- We fixed the use of an incorrect namespace in a published web service. (Ticket 46759)
- After adding an
Autonumberattribute on an entity that has specializations, existing objects were initialized with duplicate values for the new attribute. With this fix, the values will be unique. (Ticket 43598)
- We fixed the incorrect XPath-to-SQL conversion that occurred in some cases of nested binary
ORexpressions with associations. (Tickets 38219, 47089)
- We fixed a disturbing NullPointerException message that appeared in the browser when sorting the attributes of an associated entity that had “entity access” applied. The sorting itself has not changed. (Ticket 44233)
This known issue note was added after the release of 7.1.0. This known issue will be fixed for 7.1.1.
- The offline functionality for mobile apps is broken.