Hi Isomorphic.
I have a CustomValidator associated to a ListGridField which is working as expected, generating validation errors when some specific condition is not met by the values entered in the field. But now I want to display custom messages explaining the cause of the error (which for my real case, are several), but I can't seem to be able to get it to work. I read several posts here in the forums, and they all talk about the setFieldError api, which is the one I am using, but the custom error message simply won't show.
Here is a simple test case:
So the question is what am I missing here? Maybe something in specific place I am calling setFieldError? Any specific required call sequence I need to be aware of?
SmartGWT 6.0-p20160622. Chrome 52.0.2743.116 m.
I have a CustomValidator associated to a ListGridField which is working as expected, generating validation errors when some specific condition is not met by the values entered in the field. But now I want to display custom messages explaining the cause of the error (which for my real case, are several), but I can't seem to be able to get it to work. I read several posts here in the forums, and they all talk about the setFieldError api, which is the one I am using, but the custom error message simply won't show.
Here is a simple test case:
Code:
public class TestCases implements EntryPoint { private static final String PARAMETER_FIELD = "Parameter"; private static final String GROUP_FIELD = "Group"; private static final String VALUE_FIELD = "Value"; private ListGrid grid = new ListGrid(); public void onModuleLoad() { configureListGrid(grid); setGridFields(); setGridData(); grid.show(); enableAdminConsole(); } private void configureListGrid(ListGrid grid) { grid.setWidth(400); grid.setHeight(300); grid.setCanEdit(true); } private void setGridFields() { CustomValidator validator = new CustomValidator() { @Override protected boolean condition(Object rawValue) { Record validatedRecord = getRecord(); String parameterName = validatedRecord.getAttribute(PARAMETER_FIELD); return isValid(parameterName, rawValue); } private boolean isValid(String parameterName, Object rawValue) { try { int value = Integer.parseInt((String) rawValue); SC.say("Value: " + value); if ((value < 0) || (value > 100)){ return false; } } catch (Exception e) { RecordList gridRecords = grid.getDataAsRecordList(); int validatedRow = gridRecords.findIndex(PARAMETER_FIELD, parameterName); SC.say("Row: " + validatedRow); grid.setFieldError(validatedRow, VALUE_FIELD, "Wrong number format"); grid.refreshRow(validatedRow); return false; } return true; } }; ListGridField group = new ListGridField(GROUP_FIELD); group.setCanEdit(false); ListGridField parameter = new ListGridField(PARAMETER_FIELD); parameter.setCanEdit(false); ListGridField value = new ListGridField(VALUE_FIELD); value.setValidators(validator); grid.setFields(group, parameter, value); } private void setGridData() { RecordList parameters = new RecordList(); for (int i = 1; i < 5; i++) { Record parameter = new Record(); int group = ((i % 2) != 0) ? 1 : 2; parameter.setAttribute(GROUP_FIELD, "Group" + group); parameter.setAttribute(PARAMETER_FIELD, "Parameter" + i); parameters.add(parameter); } grid.setData(parameters); } }
SmartGWT 6.0-p20160622. Chrome 52.0.2743.116 m.
Comment