java - Bean Validation doesn't work? -


i'm looking solution problem still haven't found. in bean i'm using annotations validations doesn't work , i'm looking in internet work.

i'm using: vaadin 7 , maven

i this.

/** person's bean */ @entity public class person{  @id @generatedvalue private integer id;  @notnull @notempty @size(min=5, max=50, message="insert first name") private string firstname;  @notnull @notempty @email private string email;  //get , set }  //my app public class loginview extends verticallayout{     private textfield firstname, email;     private beanfieldgroup<person> binder;     private formlayout form;      public loginview(){            form = new formlayout();            binder = new beanfieldgroup<person>(person.class);            field<?> field = null;            field = binder.buildandbind("firstname", "firstname");            firstname = (textfield)binder.getfield("firstname");            form.addcomponent(firstname);             field = binder.buildandbind("email", "email");            email = (textfield)binder.getfield("email");            form.addcomponent(email);            this.addcomponent(form);      } } 

how can work ?

enter image description here

/** maven dependecy */ <dependency>     <groupid>com.vaadin.addon</groupid>     <artifactid>beanvalidation-addon</artifactid>     <version>0.6.2</version> </dependency>    /** exception */ java.lang.nosuchmethoderror: com.vaadin.event.eventrouter.fireevent(ljava/util/eventobject;lcom/vaadin/server/errorhandler;)v     @ com.vaadin.server.vaadinservice.onvaadinsessionstarted(vaadinservice.java:783)     @ com.vaadin.server.vaadinservice.createandregistersession(vaadinservice.java:740)     @ com.vaadin.server.vaadinservice.dofindorcreatevaadinsession(vaadinservice.java:696)     @ com.vaadin.server.vaadinservice.findorcreatevaadinsession(vaadinservice.java:637)     @ com.vaadin.server.vaadinservice.findvaadinsession(vaadinservice.java:501)     @ com.vaadin.server.vaadinservice.handlerequest(vaadinservice.java:1376)     @ com.vaadin.server.vaadinservlet.service(vaadinservlet.java:238)     @ javax.servlet.http.httpservlet.service(httpservlet.java:727)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:303)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:52)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:241)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:208)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:220)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:122)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:501)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:170)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:98)     @ org.apache.catalina.valves.accesslogvalve.invoke(accesslogvalve.java:950)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:116)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:408)     @ org.apache.coyote.http11.abstracthttp11processor.process(abstracthttp11processor.java:1040)     @ org.apache.coyote.abstractprotocol$abstractconnectionhandler.process(abstractprotocol.java:607)     @ org.apache.tomcat.util.net.jioendpoint$socketprocessor.run(jioendpoint.java:315)     @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1145)     @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:615)     @ java.lang.thread.run(thread.java:724) 

alright, found correct implementation. i'm going show code @ end. need do:

  1. set actual instance of person data source binder
  2. get rid of field variable, it's useless in code, have firstname , email fields end adding form layout, field doesn't end anywhere.
  3. add button submit form , checkout error messages if there any.

here's code:

@theme("mytheme") public class myvaadinui extends ui {      private field firstname, email;     private formlayout form;      @override     public void init(vaadinrequest request){         verticallayout layout = new verticallayout();          //1. set propertyitem fieldgroup         final beanfieldgroup<person> binder = new beanfieldgroup<person>(person.class);         binder.setitemdatasource(new beanitem<person>(new person()));         form = new formlayout();           //2. don't use field field, it's useless         firstname = binder.buildandbind("firstname", "firstname");         email = binder.buildandbind("email", "email");          form.addcomponent(firstname);         form.addcomponent(email);          layout.addcomponent(form);          //3. add button submit form         form.addcomponent(new button("ok", new button.clicklistener() {             @override             public void buttonclick(clickevent event) {                 try {                     binder.commit();                     notification.show("thanks!");                 } catch (fieldgroup.commitexception e) {                     notification.show("you fail!");                 }             }         }));         setcontent(layout);     } } 

just know, used couple of different dependencies, should try own first. change code , see happens. these dependencies used:

        <dependency>         <groupid>org.hibernate.javax.persistence</groupid>         <artifactid>hibernate-jpa-2.0-api</artifactid>         <version>1.0.1.final</version>     </dependency>     <dependency>         <groupid>org.hibernate</groupid>         <artifactid>hibernate-validator</artifactid>         <version>5.1.0.final</version>     </dependency> 

Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -