Ajax Configuration

The following topics are covered below:


Ajax Configuration Editor

The Ajax Configuration Editor is part of the Natural for Ajax Runtime Tools. It's available in every Natural for Ajax web archive. When started, it opens the active ajax configuration file user_cisconfig.xml. If the configuration file doesn't exist, it opens the cisconfig.xml file in the <subfolder>/cis/config.

In NaturalONE, to open a cisconfig.xml file of your User Interface Component with the Ajax Configuraton Editor: Right-click on the cisconfig.xml file and choose Open with > Ajax Configuration Editor.

General cisconfig.xml Parameters

The cisconfig.xml file contains some general control information. The following is a very basic example:

<cisconfig startmonitoringthread="true"
           requestclienthost="false"
           debugmode="false"
           loglevel="EWI"
           logtoscreen="false"
           sessiontimeout="3600"
           xmldatamanager="com.softwareag.cis.xmldata.filebased.XMLDataManager"
           useownclassloader="true"
           browserpopuponerror="false"
           framebuffersize="3"
           onlinehelpmanager="com.softwareag.cis.onlinehelp.projectbased.FrameHelpOHManager"
           textencoding="UTF-8"
           enableadapterpreload="true">
</cisconfig>

Control Behavior – All Controlsets

Parameter Description
buttonctrlenter

Default false.

If set to true <ctrl><enter> on a focused button will trigger the button method.

completedateinput

Default: true.

By default, partial input in the DATEINPUT control is automatically completed.

When you set this parameter to "false", no automatic completion will be done, thus forcing end-users to always enter the complete date.

Values: true/false.

completedateinputrange

Default: 999

If the setting completedateinput is set to false, the completedateinputrange is ignored.

Valid values:

999 : Compatibility with versions before 932. For a two-digit year value 00 - 49, the current century is set. For a two-digit year value 50 - 99, the previous century is set.
0 : For a two-digit year value, the current century is set.
1 : 99 Same behavior as the Natural YSLW profile parameter. For details, see Parameter Reference > YSLW - Year Sliding or Fixed Window in the Natural documentation.
1582-2600 : Same behavior as the Natural YSLW profile parameter. For details, see Parameter Reference > YSLW - Year Sliding or Fixed Window in the Natural documentation.

customdates

You can specify several customdates (YYYY-MM-DD) separated by a semi-colon. Entering a custom date in the browser doesn't display a validation error.

displayallowtab

Default: true

Defines if tabbing into DISPLAY input controls is possible.

accessibilityroles

Default: true

Defines for controls and container that corresponding role attributes for accessibility are generated.

fieldnumerictypesrightaligned

Default: false.

Set this parameter to "true" in order to right-align text within the FIELD control when using the data type int, long or float.

Values: true/false.

flushreceivespreviousfocused

Default: false.

By default, during a flush event the adapter gets as focus information the input control that received the focus. Set this parameter to "true" if during a flush event your application relies on getting as focus information the input control that lost the focus.

For Natural applications this means: By default, the Natural system variable *CURS-FIELD contains during the flush event the value of the Natural system function POS for the input control that received the focus.

Values: true/false.

suppressfocusmanagement

Default: false.

If you set this parameter to "true", no focus management in the client will be done after a server round trip. This means: The focus will not be set to focus-requesting controls such as "EDIT" fields with "ERROR" status after a server round trip.

Usually, you do not set this parameter. If you need to suppress focus management for specific server round trips, you usually do this from within your adapter code for these specific server round trips. See also the focusmgtprop in the NATPAGE control. Only set this parameter to "true" if your application needs to do it vice versa: Suppress focus mangement for nearly all server round trips and only explicitly activate focus management for some specific server round trips from within your adapter code.

Values: true/false.

Control Behavior – Non-Responsive Controlset

Parameter Description
animatecontrols

Default: true.

Defines how Application Designer handles the animation of controls. There are several controls that can be rendered in an animated way and in a standard way.

Setting this parameter to "false" can help to improve performance, especially if you are not using the newest hardware.

Values: true/false.

maxitemsinfieldcombo

Default: 100.

The FIELD control provides for a predefined pop-up method openIdValueComboOrPopup. Depending on the size of the list of valid values, the list is either shown in a combo box or in a pop-up. Use this parameter to control the maximum number of entries that are to be shown in the combo box.

Value: integer number.

takeoutfieldpopupicon

Default: false.

Set this parameter to "true" in case you are using right-aligned FIELD controls with value help. This will avoid overlapping of the right-aligned text and the corresponding drop-down icon.

Values: true/false.

valuehelpkeys

You can specify your own keys to open the value help pop-up and/or combo box in a FIELD control. The keys are specified in the same way as hot keys. Example:

valuehelpkeys = "ctrl-65;ctrl-alt-66"
resetstatusbarbefore

Default: false.

When set to true, the status bar messages are reset in the browser before a server roundtrip is done.

Values: true/false.

resetstatuspropfocus

Default: false.

If set to "true", statusprop values FOCUS and FOCUS_NO_SELECT will automatically be reset to the default value; statusprop value ERROR will be reset to ERROR_NO_FOCUS. The reset is done before the next server round-trip to Natural, so that the Natural program will receive the changed value. This way, the focus is set only once without having to actively reset the statusprop value in the next server round-trip. The Natural for Ajax runtime will take care of the reset.

clientsideerrorinstatusbar

Default: false.

By default, client-side error messages are displayed as pop-ups.

When you set this parameter to "true", client-side error messages are displayed in the status bar.

Values: true/false.

usemessagepopup

Default: false.

Set this parameter to "true" in order to show status messages as message pop-ups.

Values: true/false.

itrinlinedisplay

Only set this if you notice rounding issues with pixel-sizing in ITRs while zooming the page in Google Chrome and/or Edge Chromium.

Logging and Error Handling

Parameter Description
browserpopuponerror

Default: false.

Defines how Application Designer handles it if the application behind an Application Designer page throws an error.

By default (false), the browser switches to an error screen. In the screen, the user can only abort the current function. This is the default way in which any kind of inconsistency is automatically omitted.

When you set browserpopuponerror to "true", the browser opens a pop-up window in which the error is output. This setting should only be used during development because it may cause inconsistencies in the application.

Values: true/false.

debugmode

Default: false.

A log is written permanently into Application Designer's log directory. When debugmode is set to "true", a lot of information which normally is not required is written to the log.

Be aware that you can also set the debug mode dynamically within your running system. Application Designer provides a monitoring tool in which you can switch the debug mode on and off.

Values: true/false.

errorreactionadapter

In case of an unhandled application error, the Application Designer runtime navigates to an error page. The class name specified in errorreactionadapter is the Java adapter for this error page.

If an error reaction adapter is not specified, a default adapter is used which shows the error's stack trace.

The Application Designer framework contains a second error reaction adapter with the class name com.softwareag.cis.server.SecureErrorReactionAdapter. For security reasons, this adapter does not show a stack trace but only an error message.

You can write your own error reaction adapter and create your own error page. An error reaction adapter must implement one of the interfaces com.softwareag.cis.server.ISecureErrorReactionAdapter or com.softwareag.cis.server.IErrorReactionAdapter. For more information, see the corresponding Java documentation.

loglevel

Default: EWI.

Defines the message types that are to be logged. Values:

E (error)
W (warning)
I (information)
D (debug)
N (no logging)

You can specify any combination of message types by concatenating the message types.

Example: "EW" logs all error and warning messages. "EWI" additionally logs information messages.

Specify "N" (no logging) to switch off writing log messages to a logfile.

Caution:
When having set debugmode to "true", the loglevel filter is automatically bypassed and all messages are logged. debugmode is stronger than loglevel.

logtoscreen

Default: false.

If this parameter is set to "true", all Application Designer log information is also output to the command screen from which you started Application Designer. This parameter should only be set to "true" if running in development mode.

Values: true/false.

maxserverlogage

Default: -1 (log files are not automatically deleted).

When setting maxserverlogage to a value > 0, ServerLog*.log files, which are older than the set number of days, are automatically deleted.

For example, if maxserverlogage is set to 3, all ServerLog*.log files, which are older than 3 days are automatically deleted.

If startmonitoringthread is set to false, this parameter has no effect.

monitoringthreadinterval

Default: 5000.

The interval in milliseconds for the wake-up of the monitoring thread. If startmonitoringthread is set to false, this parameter has no effect.

startmonitoringthread

Default: true.

If set to "true", a monitoring thread is opened which by default wakes up every 5 seconds. You can customize this value by setting the parameter monitoringthreadinterval. The thread performs the following activities:

  1. It initiates a garbage collection periodically (every two minutes).

  2. It writes all log information into a log file (every n milliseconds. Where n represents the interval length defined in the monitoringthreadinterval parameter).

  3. It calls the clean up of sessions which are timed out (every two minutes)

  4. It checks for user interface component updates, which need to be deployed.

What happens if the monitoring thread is not started?

  1. No garbage collection will be triggered by Application Designer. This is then the task of the servlet container around.

  2. The log is not automatically written to the file location specified in the web.xml file, but is written to the servlet container's logging.

  3. Timing out sessions is not done every two minutes but every thousand requests.

  4. No user interface deployment will be done.

Caution:
Some servlet containers do not allow to let the web application start new threads (for example, the Sun reference implementations do so). For these containers, the parameter must be set to "false".

Values: true/false.

licwarningsfor

Semicolon seperated list of hostnames. When the web application is called with an URL containing one of these hostnames and the license is in the expiration period of 40 days, an alert box with a license warning is shown once per day.

Sessions, Buffers and Caches

Parameter Description
createhttpsession

Default: false.

Internally, Application Designer does not require HTTP session management that is provided by the servlet container. Some application servers (especially in clustered scenarios in which Application Designer runs in several nodes) require an explicit HTTP session ID to be used in order to route requests from a browser client always to the right application server node in the cluster. Set createhttpsession to "true" in this case.

Values: true/false.

sessiontimeout

Default: 3600 (1 hour).

Application Designer sessions are timed out according to the value defined with this parameter. This is the definition of the timeout phase in seconds. By default, 3600 is defined in the configuration file. If no parameter is specified in the configuration file, 7200 is used.

Value: integer number.

urlsessiontimeout

When Application Designer times out a session (see the sessiontimeout parameter) and the user tries to continue to work with the session, a page will be displayed inside the user's browser, indicating that a timeout happened with the user's session. By default, this page is an Application Designer page that you might not want to show to your application users.

Value: the URL of the page that is to be shown instead of the default page.

sessionidasthreadname

Default: true.

On start of each page request processing, the Application Designer runtime calls the method Thread.setName with the current session ID (default).

You can set this parameter to "false" to instruct the Application Designer runtime not to touch the thread's name.

Values: true/false.

enableadapterpreload

Default: true.

By default, the server sends all required responses at once to the client, even if different adapters are involved.

If set to "false", a separate data transfer occurs for each involved adapter.

framebuffersize

Default: 3.

Each page in the browser client runs inside a surrounding page. This surrounding page offers a couple of internal functions, one of them to buffer contained Application Designer pages: if a user opens the first page and then navigates to a second page, the first page is internally kept inside a frame buffer. If returning to the first page later on, the browser does not have to build up the first page from scratch but just switches to the buffered page.

The framebuffersize defines the number of buffered pages. Increasing the framebuffersize means that more resources are used on the client (browser) side. When changing this value, you should test the memory consumption on the client side before rolling out the change to productively running implementations.

Value: integer number.

maxworkplaceactivities

Default: -1 (unlimited).

The maximum number of workplace activities in a workplace application.

Styles, Languages and Encoding - All Pages

Parameter Description
defaultcss

You can set your own default style sheet for your entire application. For example:

../cis/styles/MY_STYLE.css
defaultlanguage

Default: en (English).

Defines the language that is to be used by default when starting Application Designer. If not set, "en" is used.

multilanguagemanager

Internally, Application Designer uses an interface to retrieve the translation information for a certain text ID and a certain language. A default implementation is available that stores the corresponding language information in files that are part of the web application.

Value: the name of the class that supports Application Designer's multi-language interface.

onlinehelpmanager

Application Designer accesses a certain URL when the user presses F1 on certain controls (for example, fields, check boxes and others). Application Designer transfers a corresponding help ID that is defined with the control into a URL and opens this URL in a pop-up window. If you have your own mechanisms for defining this URL, you can implement a corresponding Application Designer Java interface (com.softwareag.cis.onlinehelp.IOHManager).

Value: the name of the interface.

textencoding

Default: UTF-8.

By default, Application Designer reads and writes text files in UTF-8 format. You can tell Application Designer to use a different format (for example, for writing XML layout definitions). But be very careful and very aware of what you are doing.

Styles, Languages and Encoding - Responsive Pages

Parameter Description
uselatestbootstrap

If set to true Bootstrap 4 is used. If set to false Bootstrap 3 is used. When changing this setting you need to regenerate you page layouts.

Default: true. Bootstrap 4 is used.

Values: true/false.

defaultbmobilecss

Set your Natural for Ajax specific responsive stylesheet for the whole application (Bootstrap 3).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

defaultbmobilecss4

Set your Natural for Ajax specific responsive stylesheet for the whole application (Bootstrap 4).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

defaultresponsivecss

Set your Bootstrap stylesheet for the whole application (Bootstrap 3).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

defaultresponsivecss

Set your Bootstrap stylesheet for the whole application (Bootstrap 4).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

defaultresponsivecss

Set your DataTables Theme (Bootstrap 3).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

defaultdatatablescss4

Set your DataTables Theme (Bootstrap 4).

See the documentation of Natural for Ajax > Responsive Natural Page Layout > Styling a Responsive Page.

Page Behavior - Non-Responsive Pop-Ups

Parameter Description
usepagepopup

Default: false.

Set this parameter to "true" in order to open Natural for Ajax pop-ups as page pop-ups instead of browser pop-ups.

Values: true/false.

pagepopupenterhotkey

Default: false.

By default, the reactOnPagePopupEnterKey event is not triggered when ENTER is pressed in the page pop-up.

When setting this parameter to "true", the event reactOnPagePopupEnterKey is triggered when ENTER is pressed in the page pop-up. This event can be processed in the Natural program.

Values: true/false.

pagepopuphorizontal

Use this to automatically adapt the size of a page pop-up if it does not fit to its parent because the parent width is not big enough. Supported values are "zoom" and "resize". If set to "resize" the width of a page pop-up is reduced. If set to "zoom" the page pop-up will automatically be zoomed in.

Values: resize/zoom.

pagepopupvertical

Use this to automatically adapt the size of a page pop-up if it does not fit to its parent because the parent height is not big enough. Supported values are "zoom" and "resize". If set to "resize" the height of a page pop-up is reduced. If set to "zoom" the page pop-up will automatically be zoomed in.

Values: resize/zoom.

pagepopuponresize

Default: false.

If set to true an open page pop-up is resized when it's parent is resized.

Values: true/false.

popupparentdisabled

Default: false.

When setting this parameter to "true", the parent page of a page pop-up is rendered disabled while the pop-up is open. It only applies to page pop-ups.

Values: true/false.

Page Behavior - Natural

Parameter Description
natuppercase

Default: false.

Set this parameter to "true" if your Natural program only allows Latin upper-case characters. This is the case, for example, if your Natural program uses the Hebrew codepage CP803.

Important:
Set the parameter natuppercase="true" before you implement your main program with Natural for Ajax. If you set this parameter after the implemention, you will have to change all Latin lower-case characters to upper-case manually.

Values: true/false.

notifyparentonpopupclosed

Default: true.

If this parameter is set to "false", no nat:page.default will be sent to the parent Natural program after a pop-up is closed. Otherwise the parent Natural program will receive a nat:page.default event after a pop-up is closed.

Values: true/false.

Special Functions

Parameter Description
urlopenstreetmapgeocoder

URL used to access the third party geocoder for the OPENSTREETMAP controls.

You usually do not have to specify this parameter. However, if the URL of the server of this third party geocoder changes, you can adapt the URL here correspondingly.

urlbackbuttonpressed

When the browser back button is pressed, in some cases the page is not synchronized with the server anymore and the session has to be closed. In these cases a default page is displayed. Instead of this default page you can define a URL to a custom page.

Value: the URL of the page that is to be shown instead of the default page.

reloadpageonbackbutton

Default: false.

If set to true, the Ajax framework tries to reload the page when the back button is pressed. A corresponding message box is displayed to inform the end-user about the reload.

requestclienthost

Default: false.

If a client sends an HTTP request, it is determined for the first request from which client this request is coming. This operation is sometimes quite expensive. For this reason, you can switch it off. If switched off, there is no disadvantage in normal operation, besides in the monitoring tool you cannot identify which session belongs to which client.

Values: true/false.

requestdataconverter

Application Designer allows to pass each value that is input by the user through an explicit data converter on the server side, prior to passing this value to the application. In the data converter, you can implement certain security checks, for example, you can prevent users from inputting string sequences containing inline JavaScript or SQL scripting. See the interface com.softwareag.cis.server.IRequestDataConverter for more information.

Value: name of a class that implements the interface com.softwareag.cis.server.IRequestDataConverter.

sdofullpath

Default: false

The default setting enables the product's XSLT processor implementation. If switched to true, the 3rd party Xalan implementation is used instead of the product's functionality. Should you decide to use Xalan, download Xalan 2.7.2 from the Apache download sites.

Note:
Xalan 2.7.2 contains a vulnerable.

xmldatamanager

This parameter defines the file name of the class which implements the com.softwareag.cis.xmldata.IXMLDataManager interface. You can specify an own class here. The com.softwareag.cis.xmldata.XMLDataManagerFactory creates an instance using a constructor without any parameter.

workplacehotkeys

You can specify hot keys with which you can switch back and forth between the activities in a workplace.

The first entry defines the key for forward switching and the second entry defines the key for backward switching. The following example defines CTRL page up and CTRL page down as corresponding hotkeys:

workplacehotkeys = "ctrl-34;ctrl-33"

Developing and Testing

Parameter Description
htmlgeneratorlog

Defaut: false.

By default .protocol files are written during the HTML generation. If set to "true", an additional .log file is written for each layout.

Only set this to "true", if you cannot resolve generation errors via the Layout Painter error marking. It reduces generation performance.

designtimeclassloader

By default, Application Designer uses an own class loader for accessing adapter classes at design time. (You can switch this off by specifying useownclassloader="false".)

With the designtimeclassloader, you can explicitly select a class loader class that Application Designer is to use. This allows you to use class loaders that offer special functions such as reading encrypted class files.

Value: the name of a class loader class.

useownclassloader

Default: true.

If set to "true", Application Designer uses its own class loader to load application classes.

This parameter may be set to "false" in certain environments, for example, if you use Application Designer inside an environment which requires all application classes to run in the environment's own class loader environment.

Caution:
The Application Designer class loader automatically searches for classes in certain directories (<project>/appclasses/classes and <project>/appclasses/lib). If you do not use the Application Designer class loader, you have to set up your environment accordingly.

Values: true/false.

zipcontent

Default: true.

Between the browser and the server, data content is exchanged. By default, Application Designer zips the content before sending a response from the server to the browser client.

Sometimes you may want to actually "see" what is being sent (maybe you have a test tool that captures the HTTP protocol). Set zipcontent to "false" if you do not want Application Designer to zip the data content returned to the client.

Values: true/false.

testtoolidhtml4

Default: false.

If set to "true", the HTML attribute generated for the test tool IDs has the name "testtoolid". Otherwise, the name is "data-testtoolid". See also the information on standards mode and HTML5 in the Natural for Ajax documentation.

Directory for Performance Traces

The requestrecording section of the cisconfig.xml file indicates the directory in which recorded performance traces are stored.

<cisconfig ...>
    <requestrecording recordrequests="false"
                      recorddirectory="c:/temp/traces/">
    </requestrecording>
</cisconfig>

Central Class Path Extensions for Development

If you want to use your own class path extension, you may add a subsection to the cisconfig.xml file in which you extend the class path of the Application Designer class loader at development time:

<cisconfig ...>
    <classpathextension path="c:/development/centralclasses/classes"/>
    <classpathextension path="c:/development/centralclasses/libs/central.jar"/>
</cisconfig>

Each class path extension is listed with a reference to its physical path.