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

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

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
Unknown macro: {table} {column}{column} {column}{column}
Unknown macro: {tr}
Unknown macro: {th}

What

Unknown macro: {th}

Comment

Unknown macro: {tr}
Unknown macro: {td}

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.

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Use style sheets and style classes as opposed to specifying styling on elements directly by setting their properties.

Unknown macro: {td}

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.

Unknown macro: {tr}
Unknown macro: {td}

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.

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Use short running locks and transactions, preferably acquire and release them within the execution of the same method.

Unknown macro: {td}

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.

Unknown macro: {tr}
Unknown macro: {td}

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)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Try to minimize the use of comboboxes/editable fields with (long) valuelists attached, especially in combination with forms in Tableview.

Unknown macro: {td}

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.

Unknown macro: {tr}
Unknown macro: {td}

Minimize the use of dialogs, both modal and non-modal, and create a flat interface instead.

Unknown macro: {td}

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.

Unknown macro: {tr}
Unknown macro: {td}

Minimize the switching between forms as much as possible. For example: Add search functionality directly on the form, instead of on a separate form.

Unknown macro: {td}

Minimal switching between forms provides a faster user experience.

Unknown macro: {tr}
Unknown macro: {td}

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.

Unknown macro: {td}

This means that only one image needs to be downloaded to the Web Client, instead of multiple copies of the same image.

Unknown macro: {tr}
Unknown macro: {td}

Always design for a minimal resolution and allow the UI to grow

Unknown macro: {td}

This advice is also applicable for Smart Client development, but the Smart Client is more forgiving when not properly sizing elements and forms

Unknown macro: {tr}
Unknown macro: {td}

Always place elements within the bounds of the form(part)

Unknown macro: {td}

Not doing so will result in (unwanted) scrollbars in the Web Client. The Smart Client is more forgiving in this area


Differences:
Unknown macro: {table} {column}{column} {column}{column} {column}{column} {column}{column}
Unknown macro: {tr}
Unknown macro: {th}

What

Unknown macro: {th}

Smart Client

Unknown macro: {th}

Web Client

Unknown macro: {th}

Comment

Unknown macro: {tr}
Unknown macro: {td}

Automatic closing of a client that has been idle for a certain period of time

Unknown macro: {td}

Possible with plugin/additional coding

Unknown macro: {td}

Servoy Web Client is automatically closed when the HTTP session expires on the application server(configurable).

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Commands

Unknown macro: {td}

Fully supported

Unknown macro: {td}

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.

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Method execution after the method shows a modal dialog using the dialogs plugin or application.showformInDialog(...).

Unknown macro: {td}

The method is halted until the modal dialog is closed.

Unknown macro: {td}

The method continues to execute.

Unknown macro: {td}

Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.

Unknown macro: {tr}
Unknown macro: {td}

autosave mode

Unknown macro: {td}

autosave is triggered when clicking outside of an element.

Unknown macro: {td}

Clicking outside an element will not trigger a save. An explicit save button is required. This also means that onRecordEditStop is not fired immediately

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Default navigator

Unknown macro: {td}

Slider to browse through records

Unknown macro: {td}

Buttons to browse through records

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Browsing through records in Tableviews and portals

Unknown macro: {td}

Scrollbars

Unknown macro: {td}

Paging

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

plugins.http.*

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

plugins.file.*

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}

Note: some of the functionality of the file plugin is supported in the Web Client. Look here for more information

Unknown macro: {tr}
Unknown macro: {td}

plugins.udp.*

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

plugin.window

Unknown macro: {td}
Unknown macro: {td}
Unknown macro: {td}

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

Unknown macro: {tr}
Unknown macro: {td}

application.executeProgram(...)

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.executeProgramInBackground(...)

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.getPrinters(...)

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.getOSName(...)

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.getCurrentLookAndFeelName(...)

Unknown macro: {td}

returns applicable value

Unknown macro: {td}

Not applicable

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.setUIProperty(...)

Unknown macro: {td}

Depends on the property

Unknown macro: {td}

Depends on the property

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.updateUI(...)

Unknown macro: {td}
Unknown macro: {td}

The Web Client UI only gets updated after method execution and this is done automatically. Therefore, calling application.updateUI(...) will have no effect.

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

controller.setPreferredPrinter(...)

Unknown macro: {td}

Operates client side

Unknown macro: {td}

Operates server side

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

controller.showPrintPreview(...)

Unknown macro: {td}

Opens a form in print Preview mode in the client.

Unknown macro: {td}

Generates a PDF which is then streamed to the client.

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

form: onHide

Unknown macro: {td}
Unknown macro: {td}

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).

Unknown macro: {td}

Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.

Unknown macro: {tr}
Unknown macro: {td}

solution: onClose

Unknown macro: {td}
Unknown macro: {td}

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).

Unknown macro: {td}

Web Client behavior will most likely be brought inline with the Smart Client behavior in a future version of Servoy.

Unknown macro: {tr}


Unknown macro: {td}

Default row selection highlight in Tableviews and portals

Unknown macro: {td}

 Present

Unknown macro: {td}

Not present

Unknown macro: {td}


Not supported
Unknown macro: {table} {column}{column} {column}{column}
Unknown macro: {tr}
Unknown macro: {th}

What

Unknown macro: {th}

Comment

Unknown macro: {tr}
Unknown macro: {td}

Forms in Listview

Unknown macro: {td}

TableView and RecordView are supported in Servoy Web Client. Use Tableview instead.

Unknown macro: {tr}
Unknown macro: {td}

Interactive (plain) JavaBeans

Unknown macro: {td}

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.

Unknown macro: {tr}
Unknown macro: {td}

Client side integration with hardware on the client machine

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

Look and Feels

Unknown macro: {td}

Look and Feels are a Java concept. It is possible to edit the default Servoy Web Client style sheet.

Unknown macro: {tr}
Unknown macro: {td}

application.setClipBoardString(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.getClipBoardString(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.getWindowX(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.getWindowY(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.getScreenWidth(...)

Unknown macro: {td}

Only initial value is available

Unknown macro: {tr}
Unknown macro: {td}

application.getScreenHeight(...)

Unknown macro: {td}

Only initial value is available

Unknown macro: {tr}
Unknown macro: {td}

application.setWindowLocation(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.setWindowSize(...)

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

application.showFontChooser(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.showColorChooser(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.showI18Ndialog(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.showCalendar(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.setNumpadEnterAsFocusNextEnabled(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.setStatusText(...): tip parameter

Unknown macro: {td}

Browsers do not support the display a tooltip over the status bar

Unknown macro: {tr}
Unknown macro: {td}

application.setToolbarVisible(...)

Unknown macro: {td}

No support in browsers to interact with browser toolbars from within a page

Unknown macro: {tr}
Unknown macro: {td}

application.playSound(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

application.isLastPrintPreviewPrinted(...)

Unknown macro: {td}

Printing is handled by the browser; no support in browsers to determine if a print was actually done from within a page.

Unknown macro: {tr}
Unknown macro: {td}

form: showInMenu property

Unknown macro: {td}

No support in browsers to interact with the browser menubar from within a page; to no window menu present in the Web Client.

Unknown macro: {tr}
Unknown macro: {td}

form: bgRowColorCalc dataproviderName argument

Unknown macro: {td}

The dataproviderName is not sent into the bgRowColorCalc when running in Web Client.

Unknown macro: {tr}
Unknown macro: {td}

controller.sortDialog(...)

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

element: rollOverImageMedia property

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

element: cursor property

Unknown macro: {td}

Web Client behavior will most likely be brought inline with Smart Client behavior in a future version of Servoy.

Unknown macro: {tr}
Unknown macro: {td}

element: setScroll function

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

element: rotation property

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

plugins.agent.*

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

plugins.excelxport.*

Unknown macro: {td}

No support in browsers to interact with the browser menubar from within a page.

Unknown macro: {tr}
Unknown macro: {td}

plugins.textexport.*

Unknown macro: {td}

No support in browsers to interact with the browser menubar from within a page.

Unknown macro: {tr}
Unknown macro: {td}

plugins.spellcheck.*

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Border property: titleBorder value

Unknown macro: {td}

Objects that have a border property will render with a lineBorder instead of a titleBorder in the Web Client.

Unknown macro: {tr}
Unknown macro: {td}

Draw tools

Unknown macro: {td}

OVAL, ROUNDED_RECTANGLE and BORDER_PANEL will result in a normal RECTANGLE

Unknown macro: {tr}
Unknown macro: {td}

RTF field

Unknown macro: {td}

No support in browsers for RTF formatted text

Unknown macro: {tr}
Unknown macro: {td}

HTML in Comboboxes

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

Combobox: editable property: true value

Unknown macro: {td}

Not supported in browsers

Unknown macro: {tr}
Unknown macro: {td}

HTMLArea: editable property: true value

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

TabPanel: tabOrientation property: left/right/bottom values

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Tab: imageIcon property

Unknown macro: {td}
Unknown macro: {tr}
Unknown macro: {td}

Portal: multiLine, intercellSpacing and showVerticalLines properties

Unknown macro: {td}
  • No labels