GWT-ext validator untuk spring ( Part -2 .2)
waktunya turun ke koding,untuk test case kita coba buat form dengan GWT-ext dengan textfield untuk nama dan email, tanpa validasi.
/*
*code form Gwt-ext
*/
public void onModuleLoad() {
Panel panel = new Panel();
panel.setBorder(false);
panel.setPaddings(15);
//setup error reader to process from submit response from server
RecordDef errorRecordDef = new RecordDef(new FieldDef[]{
new StringFieldDef("id"),
new StringFieldDef("msg")
});
XmlReader errorReader = new XmlReader("field", errorRecordDef);
errorReader.setSuccess("@success");
final FormPanel formPanel = new FormPanel(Position.RIGHT);
formPanel.setFrame(true);
formPanel.setTitle("Test GWT Form");
formPanel.setWidth(400);
formPanel.setLabelWidth(75);
// error reader
formPanel.setErrorReader(errorReader);
//add some fields
FieldSet fieldSet = new FieldSet("Contact Information");
fieldSet.add(new TextField("nama", "nama", 190));
fieldSet.add(new TextField("email", "email", 190));
formPanel.add(fieldSet);
final Button submitBtn = new Button("Simpan", new ButtonListenerAdapter() {
public void onClick(Button button, EventObject e) {
formPanel.getForm().submit("saveData", null, Connection.POST,
"Simpan Data...", false);
}
});
formPanel.addButton(submitBtn);
panel.add(formPanel);
RootPanel.get().add(panel);
}
untuk validasi kita gunakan VALANG dari spring
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basenames="errors"/>
<bean id="customValidators" class="org.springmodules.validation.valang.ValangValidator">
<property name="valang">
<value><![CDATA[
{ nama : ? is not blank :'' :'User.nama[not.blank]' }
{ nama : length(?) > 4 :'' :'User.nama[min.length]' }
{ email : ? is not blank :'' :'User.email[not.blank]' }
{ eEmail : email(?)=true :'' :'User.email[not.valid]' }
]]></value>
</property>
</bean>
Lalu unruk resource bundle kita berisi(errors_EN_US.properties)
User.nama[not.blank]=Please fill user name.
User.nama[min.length]=user name must more than 5 char.
User.email[not.blank]=Please fill email address.
User.email[not.valid]=Please fill with valid email address.
Lalu untuk form controller spring overide the showForm method
protected ModelAndView showForm(HttpServletRequest request, HttpServletResponse response, BindException errors) throws Exception { ModelAndView modelAndView = new ModelAndView("error"); Map<String, Object> myModel = new HashMap<String, Object>(); myModel.put("error",XmlJsonBuilder.getErrorXml(errors,getMessageSourceAccessor())); modelAndView.addObject("result",myModel); return modelAndView; }
Lalu untuk XMLJsonBuilder code
import java.io.IOException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import org.springframework.context.support.MessageSourceAccessor;
import org.springframework.validation.BindException;
import org.springframework.validation.FieldError;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import esubmission.module.main.domain.ItemMenu;
import esubmission.module.user.domain.User;
public class XmlJsonBuilder {
public static String getErrorXml(BindException errors,MessageSourceAccessor messageSource) {
String errorStr="<response success=\"false\">";
errorStr+="<errors>";
Iterator<FieldError> listFieldError=errors.getFieldErrors().iterator();
while(listFieldError.hasNext())
{
FieldError field=listFieldError.next();
errorStr+="<field>";
errorStr+="<id>"+field.getField()+"</id>";
errorStr+="<msg><![CDATA["+messageSource.getMessage(field.getCode());
errorStr+="]]></msg>";
errorStr+="</field>";
}
errorStr+="</errors>";
errorStr+="</response>";
return errorStr;
}
}
Dan server validation kita selesai dibuat
Advertisement