We announce the immediate availability of Servoy 3.5 Beta 3
NOTE: this is PRE-RELEASE SOFTWARE, use with caution and make BACKUPS before you start.
This version is available through the download page on the Servoy website (developer section).
Because of our move to Tomcat 6, you will need to do a full install for this beta. We plan to have the auto updater working again for future releases.
Changes
[new] suggestions for global method assignments to form events
[new] column (i18n) title and description
[new] table events for hooking methods to insert, delete and update actions
[new] location parameter in addTab to insert a tab at a specified location
[new] validators on column data providers (can be defined on columns)
[new] “or” notation possible in find fields, example: >10||<0
[new] converters to automatically convert field data
[new] possiblity to show non-modal form dialogs
[new] skip the solution onload method in servoy developer by holding shift in select solution dialog while clicking solution to load
[new] databaseManager.getViewNames()
[enh] in new records, the first field gets focus
[enh] AJAX can be switched on and off via the admin page for web clients
[enh] preventing duplicate pk’s in related search or sort (on non-pk columns)
[enh] popup menu plugin working in web client
[chg] Java requirements, see below
[chg] increased memory limit for windows service
[chg] using native database function to limit sql results
[fix] data truncation problem with large sums on number columns
[fix] duplicating find records with date ranges does not work
[fix] when importing a solution using a table that used to exist, sequence on the table might get lost
[fix] prevent auto creation of servoy sequences for existing tables
[fix] databaseManager.getTableNames() did return views as well
[fix] fix for record delete in combination with database-defined cascade delete
[fix] DBTreeView data loading fix for incorrect data
Java requirement changes
Due to the move to Tomcat 6, Servoy now requires Java 1.5 for both Servoy Developer and Servoy Server. Servoy smart client will still work with Java 1.4.
Known issues
Serialize converter problem with multidimensional arrays
The security.canInsert / canUpdate / canDelete functions sometimes return incorrect results
DBTreeView bean does not work in runtime builder clients
Popup menu plugin checkbox/ radio menu item not (yet) working in web client
Is this supposed to return a foundset for whatever server/table? If yes, it doesn’t seem to work. It always returns something that looks like an empty String.
if (globals.result==‘ok’)
{
controller.deleteRecord()
}
David
this will not work in the web client.
You do have “modal” dialogs in the browser. But they are not modal in scripting, with that i mean that the scripts stops at the call: application.showFormXXXXX
that will not happen in servoy 3.5 maybe we can fix that kind of stuff in 4.0
So if you want to wait for the outcome then you have to do that in the onhide or in the button click thats on the form in dialog.
In other words the application.showFormInDialog should be the last thing you do in a script.
It could be that the close form in dialog doesn’t work correctly at this time. But it should work fine ofcourse if you place a button in a modal dialog and when you press that button the closeFormInDialog is called the dialog must be closed. If this isn’t the case please make a case for this.
i think i understand. the script that shows the dialog will finish. i will need to pick up my database record to delete and then hard code that into my OK button.
Ok, finally got to play with table events this morning. This is a feature I’ve eagerly anticipated.
They seem to function like I would expect. You get the record as an argument, and can return false to prevent the event from happening. You can manipulate values of the record (although I seem to be getting some sql errors in certain circumstances – i’ll let you know if I can reproduce).
So, these are “before” events. It would also be very cool if we could get “after” events. There’s a lot of cases where I want something to occur in the data model only if the event has successfully occurred. For example, creating certain default relation records “after” insert.
Also, I get the row as an argument. How do I go about testing what table that row is from? Is there a method for that? If I want to make some of my global event methods generic, I’d like to know what table I’m getting a row from.
I know this is probably a much more complex thing to ask for, but somewhere down the road it would be really cool if we could actually define callable methods on the dataprovider tables.
At any rate, very cool new stuff in 3.5. I’m about to start a new solution and I’m excited about take advantage of it all!
Validators and Converters are set on a ‘per column’ basis.
However, this does not only set the values for the solution you set them in but it is done ‘repository wide’.
Is this how you meant this to be. I think I can agree but this makes the setting of a global method as a validator a little bit ‘dangerous’.
The same applies to setting a global variable as a lookup value.
I also notice that, in the CRM demo for instance, I can’t get a printpreview when clicking on the printer icon - I get a ‘java.lang.NullPointerException’ error.
That’s very cool!! In the current beta this does not seem to work, however. Is that right or am I missing something? And: I understand right that you don’t need a form based on that table at all, right?
That’s very cool!! In the current beta this does not seem to work, however. Is that right or am I missing something? And: I understand right that you don’t need a form based on that table at all, right?
Now in the debug mode the codes past the showFormInDialog are not run until you close the formInDialog which is cool. But I could not debug any code while the formInDialog is on the top. I could not touch the method editor and other debug buttons there. Would be cool if this is fixes quickly.
Patrick: that should already work in the latest beta of 3.5
faheemhameed: i will look at this. Maybe we maybe don’t check this anymore because it is currently one of the other (so or you have a blocking dialog and can’t debug it or you have a none blocking dialog and you can debug it)