7.1

Last modified: January 2, 2024

7.1.1

Release date: April 10, 2017

Go to Marketplace

Fixes

  • 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 SaveChanges action for offline mobile apps.
  • When using the addRefreshObjectFeedback or addRefreshObjectListFeedback Java APIs, list views and data grids are no longer redundantly refreshed. Such refreshes should be performed only by addRefreshClass.

Known Issues

  • In some situations, an object associated to another object cannot be committed during the execution of a before/after commit event, resulting in an error such as “Object of type ‘MyModule.MyEntity’ with guid ‘12345’ cannot be updated, as it does not exist anymore.” For example, consider two new objects A and B, wherein A (parent) is associated with B (child) and A has a before- or after-commit event. In this event, B will be changed and committed. If you then commit A, B will be marked as ‘autocommitting’. Because of this, committing B in the before- or after-commit event of A will fail, as it expects A to already exist in the database, which is not yet the case. (Tickets 59099, 59288)
  • Users with non-administrative user roles with the permission to manage users are able to escalate their privileges. For more information on this vulnerability, see SSA-875726 Privilege Escalation Vulnerability in Mendix.
  • Currently you can configure expression-based conditional visibility/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 certain situations, OnChange microflows may not reflect changes done in the UI. Instead, an older version of the object will be used.

7.1.0

Release date: March 29, 2017

Go to Marketplace

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.

Stateless Runtime

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!

Fixes

  • 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 an 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.

Action Button

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.

Accessibility Improvements

  • We added input grouping and proper label reference in the radio button groups.
  • We added aria-label to the button in a date picker input.
  • The lang property 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 and urlDecode. UrlEncode can come in handy when constructing the URL of the REST endpoint you are calling (to pass query parameters, for example). Finally, we added the new method executeHttpRequest() in the public API to make it easier to execute HTTP requests from Java Actions.

Other Fixes

  • We fixed the downloading of remote files when the static resources from a disk option is enabled for hybrid apps. (Ticket 49617)
  • The currentUser is now always available in the microflow scope while executing a microflow. (Ticket 44116)
  • Setting First day of the week to Default (based on locale) now results in the correct week numbers (based on the locale). (Ticket 44259)
  • Using empty as a default for parseDecimal([..]) no longer returns null or throws IllegalArgumentException. (Ticket 44292)
  • Removing items from a list using a list containing duplicates no longer throws IndexOutOfBoundException. (Ticket 44966)
  • We fixed an 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 an issue where changes for an object were not available inside a microflow. (Ticket 50650)
  • We fixed an issue where disabling the keep-alive setting (setting EnableKeepAlive to false) resulted in a lot of keep-alive requests. (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 maxOccurs was 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 Autonumber attribute 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 OR expressions 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)
  • Users working on Windows 7 and 8.1 experienced issues during installation of the .NET Framework bundled with the Modeler installer. This has been fixed. (Ticket 60144)

Known Issues

  • In some situations, an object associated to another object cannot be committed during the execution of a before/after commit event, resulting in an error such as “Object of type ‘MyModule.MyEntity’ with guid ‘12345’ cannot be updated, as it does not exist anymore.” For example, consider two new objects A and B, wherein A (parent) is associated with B (child) and A has a before- or after-commit event. In this event, B will be changed and committed. If you then commit A, B will be marked as ‘autocommitting’. Because of this, committing B in the before- or after-commit event of A will fail, as it expects A to already exist in the database, which is not yet the case. (Tickets 59099, 59288)
  • Users with non-administrative user roles with the permission to manage users are able to escalate their privileges. For more information on this vulnerability, see SSA-875726 Privilege Escalation Vulnerability in Mendix.
  • Currently you can configure expression-based conditional visibility/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 certain situations, OnChange microflows may not reflect changes done in the UI. Instead, an older version of the object will be used.
  • The offline functionality for mobile apps is broken.