Child pages
  • Web Client compatibility overview
Skip to end of metadata
Go to start of metadata

Servoy's claim to fame is that you can use the same forms and code in both Servoy Smart Client and Servoy Web Client. While it is perfectly possible to create applications that look and work exactly the same for both Smart and Web Client you need to keep in mind what the differences between the two are - very often caused by limitations in HTML. In this page, you will find a comprehensive overview of differences and what to keep in mind when developing for both Servoy Smart Client and Servoy Web Client.

Development tips
What Comment
Use application.getApplicationType() to determine which type of client your solution is running in and branch accordingly, when using functionality that is not supported in both clients.
Use style sheets and style classes as opposed to specifying styling on elements directly by setting their properties. Besides a more consistent styling throughout your solution, it means less styling info is send to the client, thus the Web Client performance will improve.
Transparent PNG images are not supported by Internet Explorer <= 6. If you need transparent images and support for Internet Explorer <= 6, use transparent GIF's.
Use short running locks and transactions, preferably acquire and release them within the execution of the same method. If user interaction is required to release an acquired lock of transaction and the user closes the browser/navigates away from the Web Client page without releasing the lock or transaction, the lock/transaction will remain until the Web Client session times out and is destroyed. Use autosave=false to accumulate edits without having a lock/transaction active.
Keep in mind that the user can, at any time, navigate away from your solution, by opening a bookmark, typing a new URL etc. (see previous remark)
Try to minimize the use of comboboxes/editable fields with (long) valuelists attached, especially in combination with forms in Tableview. Use type-ahead fields for long valuelists or consider a edit popup dialog with search capabilities. For each field/combobox, the entire valuelist has to be included in the HTML source of the Web Client.
Minimize the use of dialogs, both modal and non-modal, and create a flat interface instead. Multiple windows/dialogs, in general, is not a concept users like when using a browser. Popup blockers might block your (non-modal) dialog from showing.
Minimize the switching between forms as much as possible. For example: Add search functionality directly on the form, instead of on a separate form. Minimal switching between forms provides a faster user experience.
When using images that do not come from the Servoy Media Library, do re-use images. For example: On a TreeView, when using the same image on multiple nodes, do not store the image for the node on each node record, but link to one shared image stored somewhere else. This means that only one image needs to be downloaded to the Web Client, instead of multiple copies of the same image.
Always design for a minimal resolution and allow the UI to grow This advice is also applicable for Smart Client development, but the Smart Client is more forgiving when not properly sizing elements and forms
Always place elements within the bounds of the form(part) Not doing so will result in (unwanted) scrollbars in the Web Client. The Smart Client is more forgiving in this area


Differences:
What Smart Client Web Client Comment
Automatic closing of a client that has been idle for a certain period of time Possible with plugin/additional coding Servoy Web Client is automatically closed when the HTTP session expires on the application server(configurable).
Commands Fully supported Commands are not supported, as there is no menubar in the Web Client for the user to trigger the command. Using the window plugin, it is possible to simulate the behavior of Servoy Smart Client.
Method execution after the method shows a modal dialog using the dialogs plugin or application.showformInDialog(...). The method is halted until the modal dialog is closed. The method continues to execute. Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.
autosave mode autosave is triggered when clicking outside of an element. Clicking outside an element will not trigger a save. An explicit save button is required.
Default navigator Slider to browse through records Buttons to browse through records
Browsing through records in Tableviews and portals Scrollbars Paging
plugins.http.* Operates client side Operates server side
plugins.file.* Operates client side Operates server side Note: some of the functionality of the file plugin is supported in the Web Client. Look here for more information
plugins.udp.* Operates client side Operates server side
plugin.window Some functionality is supported in both clients and other functionality is only supported in one of the 2 clients. See the plugin's documentation here for more details
application.executeProgram(...) Operates client side Operates server side
application.executeProgramInBackground(...) Operates client side Operates server side
application.getPrinters(...) Operates client side Operates server side
application.getOSName(...) Operates client side Operates server side
application.getCurrentLookAndFeelName(...) returns applicable value Not applicable
application.setUIProperty(...) Depends on the property Depends on the property
application.updateUI(...) The Web Client UI only gets updated after method execution and this is done automatically. Therefore, calling application.updateUI(...) will have no effect.
controller.setPreferredPrinter(...) Operates client side Operates server side
controller.showPrintPreview(...) Opens a form in print Preview mode in the client. Generates a PDF which is then streamed to the client.
form: onHide the onHide event of a form does NOT fire when the user browses to a new URL from within the browser (not triggered by code in the solution). Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.
solution: onClose the onClose event of a solution does NOT fire when the user browses to a new URL from within the browser (not triggered by code in the solution). Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.


Not supported
What Comment
Forms in Listview TableView and RecordView are supported in Servoy Web Client. Use Tableview instead.
Interactive (plain) JavaBeans Unless the bean is specifically designed to work in Servoy Web Client, only a snapshot JPEG image of the bean will be rendered in Web Client.
Client side integration with hardware on the client machine Not supported in browsers
Look and Feels Look and Feels are a Java concept. It is possible to edit the default Servoy Web Client style sheet.
application.setClipBoardString(...) Not supported in browsers
application.getClipBoardString(...) Not supported in browsers
application.getWindowX(...) Not supported in browsers
application.getWindowY(...) Not supported in browsers
application.getScreenWidth(...) Only initial value is available
application.getScreenHeight(...) Only initial value is available
application.setWindowLocation(...) Not supported in browsers
application.setWindowSize(...) Not supported in browsers
application.showFontChooser(...)
application.showColorChooser(...)
application.showI18Ndialog(...)
application.showCalendar(...)
application.setNumpadEnterAsFocusNextEnabled(...)
application.setStatusText(...): tip parameter Browsers do not support the display a tooltip over the status bar
application.setToolbarVisible(...) No support in browsers to interact with browser toolbars from within a page
application.playSound(...)
application.isLastPrintPreviewPrinted(...) Printing is handled by the browser; no support in browsers to determine if a print was actually done from within a page.
form: showInMenu property No support in browsers to interact with the browser menubar from within a page; to no window menu present in the Web Client.
form: bgRowColorCalc dataproviderName argument The dataproviderName is not sent into the bgRowColorCalc when running in Web Client.
controller.sortDialog(...)
element: rollOverImageMedia property
element: cursor property Web Client behavior will most likely be brought inline with Smart Client behavior in a future version of Servoy.
element: setScroll function
element: rotation property
plugins.agent.*
plugins.excelxport.* No support in browsers to interact with the browser menubar from within a page.
plugins.textexport.* No support in browsers to interact with the browser menubar from within a page.
plugins.spellcheck.*
Border property: titleBorder value Objects that have a border property will render with a lineBorder instead of a titleBorder in the Web Client.
Draw tools OVAL, ROUNDED_RECTANGLE and BORDER_PANEL will result in a normal RECTANGLE
RTF field No support in browsers for RTF formatted text
HTML in Comboboxes Not supported in browsers
Combobox: editable property: true value Not supported in browsers
HTMLArea: editable property: true value
TabPanel: tabOrientation property: left/right/bottom values
Tab: imageIcon property
Portal: multiLine, intercellSpacing and showVerticalLines properties
  • No labels