Validation errors expressed in application-specific XML can be communicated to visual components by implementing DataSource.setResponseTransformHandler() (Smart GWT)
/*
* SmartGWT (GWT for SmartClient)
* Copyright 2008 and beyond, Isomorphic Software, Inc.
*
* SmartGWT is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation. SmartGWT is also
* available under typical commercial license terms - see
* http://smartclient.com/license
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package com.smartgwt.sample.showcase.client;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.ui.RootPanel;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.XMLTools;
import com.smartgwt.client.data.fields.DataSourcePasswordField;
import com.smartgwt.client.data.fields.DataSourceTextField;
import com.smartgwt.client.rpc.RPCResponse;
import com.smartgwt.client.types.DSDataFormat;
import com.smartgwt.client.widgets.Canvas;
import com.smartgwt.client.widgets.IButton;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.HeaderItem;
import com.smartgwt.client.widgets.form.fields.PasswordItem;
import com.smartgwt.client.widgets.layout.VLayout;
public class Showcase implements EntryPoint {
public void onModuleLoad() {
RootPanel.get().add(getViewPanel());
}
public Canvas getViewPanel() {
DataSource dataSource = new DataSource() {
protected void transformResponse(DSResponse response, DSRequest request, Object xmlData) {
String status = XMLTools.selectString(xmlData, "/response/status");
if (!status.equals("success")) {
response.setStatus(RPCResponse.STATUS_VALIDATION_ERROR);
Object errors = XMLTools.selectNodes(xmlData, "/response/errors");
JavaScriptObject errorsJS = XMLTools.toJS(errors);
response.setErrors(errorsJS);
}
}
};
dataSource.setDataFormat(DSDataFormat.XML);
dataSource.setDataURL("data/dataIntegration/xml/serverValidationErrors/serverResponse.xml");
DataSourceTextField userNameField = new DataSourceTextField("userName", "Username", 50, true);
DataSourceTextField firstNameField = new DataSourceTextField("firstName", "First Name", 50,
true);
DataSourceTextField lastNameField = new DataSourceTextField("lastName", "Last Name", 50, true);
DataSourceTextField emailField = new DataSourceTextField("email", "Email", 100, true);
DataSourcePasswordField passwordField = new DataSourcePasswordField("password", "Password", 20,
true);
dataSource.setFields(userNameField, firstNameField, lastNameField, emailField, passwordField);
final DynamicForm form = new DynamicForm();
form.setDataSource(dataSource);
form.setUseAllDataSourceFields(true);
HeaderItem header = new HeaderItem();
header.setDefaultValue("Registration Form");
PasswordItem passwordItem = new PasswordItem();
passwordItem.setName("password");
IButton saveButton = new IButton("Save");
saveButton.addClickHandler(new ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) {
if (form.validate()) {
form.saveData();
}
}
});
form.setFields(header, passwordItem);
form.setValue("userName", "bsmith");
form.setValue("firstName", "Bob");
form.setValue("lastName", "Smith");
form.setValue("email", "bob@.com");
form.setValue("password", "sekrit");
VLayout layout = new VLayout(10);
layout.addMember(form);
layout.addMember(saveButton);
return layout;
}
}
SmartGWT.zip( 9,880 k)Related examples in the same category