Page History
...
Code Block |
---|
function nullToDash() { var nr = arguments[0]; if(nr == null) return '-'; return nr; } function dashToNull() { var nr = arguments[0]; if(nr == '-') return null; return nr; } |
Configuring the UI converter of field 'fldAge' format property:
Code that tests the actual/UI value:
Code Block |
---|
/** @type {JSRecord<db:/example_data/employees>}*/
var rec = foundset.getSelectedRecord();
if(rec.age == null) {
application.output('Actual data: null')
application.output('UI data:' + elements.fldAge)
} |
The image below shows how data is displayed in the UI:
UI Converter from java code (plugin)
...
- convertFromObject()
Convert from UI value to dataprovider value - convertToObject()
Converts from dataprovider value to UI value - type (one of TEXT, INTEGER, NUMBER, DATETIME or MEDIA)
The UI data type (so the resulting type of the convertToObject()).
Java Code Example
This is an example of a plugin that delivers a converter from joda time (which has support for time persiods) to java-util-date (which is supported by Servoy UI elements) time.
The dataprovider type will be MEDIA because Servoy does not natively support.
Code Block |
---|
private static final IUIConverter[] UI_CONVERTERS = new IUIConverter[] { JodaToDateConverter.INSTANCE };
public IUIConverter[] getUIConverters()
{
return UI_CONVERTERS;
}
static class NrToJodaConverter implements ITypedColumnConverter
{
static final NrToJodaConverter INSTANCE = new NrToJodaConverter();
public Object convertToObject(Map<String, String> props, int column_type, Object dbvalue) throws Exception
{
if (dbvalue == null)
{
return null;
}
return new DateTime(Utils.getAsLong(dbvalue));
}
public Object convertFromObject(Map<String, String> props, int column_type, Object obj) throws Exception
{
if (obj instanceof DateTime)
{
return Long.valueOf(((DateTime)obj).getMillis());
}
return obj; // or throw an exception??
}
public Map<String, String> getDefaultProperties()
{
return null;
}
public int[] getSupportedColumnTypes()
{
return new int[] { IColumnTypes.INTEGER };
}
public String getName()
{
return getClass().getSimpleName();
}
public int getToObjectType(Map<String, String> props)
{
// Servoy does not understand joda time natively.
return IColumnTypes.MEDIA;
}
}
static class JodaToDateConverter implements IUIConverter
{
static final JodaToDateConverter INSTANCE = new JodaToDateConverter();
public Object convertFromObject(Map<String, String> props, int input_type, Object converted) throws Exception
{
if (converted instanceof Date)
{
return new DateTime(((Date)converted).getTime());
}
return converted; // or return null or throw an exception??
}
public Object convertToObject(Map<String, String> props, int input_type, Object input) throws Exception
{
if (input instanceof DateTime)
{
return new Date(((DateTime)input).getMillis());
}
return input; // or return null or throw an exception??
}
public Map<String, String> getDefaultProperties()
{
return null;
}
public int[] getSupportedDataproviderTypes()
{
// Servoy does not understand joda time natively.
return new int[] { IColumnTypes.MEDIA };
}
public String getName()
{
return getClass().getSimpleName();
}
public int getToObjectType(Map<String, String> props)
{
return IColumnTypes.DATETIME;
}
} |
Solution model
UI converters are currently not supported by the solution model.
...
Overview
Content Tools
Activity