Java Addicted Programmer

my escape way from the addiction……..

GWT-ext validator untuk spring ( Part -2 .2)

leave a comment »

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

Written by luvj

January 21, 2009 at 3:25 am

Posted in Ext, Gwt, Spring

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.