Πώς να παίρνω Άνοιξη-Data-MongoDB για την επικύρωση των αντικειμένων μου;

ψήφοι
14

Έχω μια πολύ απλή Άνοιξη εφαρμογή εκκίνησης που χρησιμοποιεί Άνοιξη-Data-MongoDB

Το μόνο που θέλω να κάνετε είναι να ορίσετε έναν κανόνα επικύρωσης JSR-303 που λέει ότι το αντικείμενο Είμαι εξοικονόμηση πρέπει να έχει ένα όνομα χρήστη. Διάβασα ότι JSR-303 προστέθηκε με την άνοιξη-data-MongoDB στην έκδοση 1.1, έτσι υπέθεσα ότι όταν αποθηκεύσετε ένα αντικείμενο είναι επικυρωμένα, αλλά αυτό δεν είναι η περίπτωση.

Υπάρχει κάποιος που έχει ένα απλό παράδειγμα εγκατάστασης που δείχνει πώς λειτουργεί αυτό;

Μου POJO χρήστη μοιάζει

public class User {

    @Id
    private String id;

    @NotNull(message = User Name is compulsory)
    private String userName;
    private String password;

    public User() {}

    public String getId() {
      return id;
    }
    public void setId(String id) {
      this.id = id;
    }

    public String getUserName() {
      return userName;
    }
    public void setUserName(String userName) {
      this.userName = userName;
    }


    public String getPassword() {
      return password;
    }
    public void setPassword(String password) {
      this.password = PasswordAuthService.hash(password);
    }
}

Είδα κάπου ότι η επικύρωση ξεκινά μόνο αν έχετε ένα εργαλείο επικύρωσης που δημιουργήθηκε στο πλαίσιο Γι 'αυτό προσπάθησα ενημέρωση τάξη Εφαρμογή μου (το οποίο περιέχει όλες τις ρυθμίσεις, για να μοιάζουν

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

    @Bean
    public Validator getValidator() {
      LocalValidatorFactoryBean validator = new LocalValidatorFactoryBean();
      return validator;
    }

    public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
    }

}
Δημοσιεύθηκε 21/03/2014 στις 21:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
28

Πρώτα βεβαιωθείτε ότι έχετε JSR-303 επικύρωσης για classpath, για παράδειγμα:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
    <version>4.2.0.Final</version>
</dependency>

Εάν χρησιμοποιείτε Java config, ο τρόπος να προχωρήσουμε είναι να δημιουργήσουμε 2 φασόλια:

@Bean
public ValidatingMongoEventListener validatingMongoEventListener() {
    return new ValidatingMongoEventListener(validator());
}

@Bean
public LocalValidatorFactoryBean validator() {
    return new LocalValidatorFactoryBean();
}

Voila! Επικύρωση εργάζεται τώρα.

Απαντήθηκε 22/03/2014 στις 21:57
πηγή χρήστη

ψήφοι
1

Βρήκα ότι αν μπορώ να προσθέσω

public User addUser(@RequestBody  @Valid User newUser, 
                   BindingResult bindingResult) throws Exception {

  if (bindingResult.hasErrors()) {
    throw new Exception("Validation Error");
  }

Για να ελεγκτής μου αυτή επικυρώνει την εισερχόμενη JSON κατά τους κανόνες μου, αν και θα πρέπει ακόμα να προσπαθήσουμε και να ρυθμίσετε την validatingMongoEventListener να παρεμποδίσει οποιαδήποτε άλλα μέρη του κώδικα μου που προσπαθούν να ενημερώσετε το μοντέλο με μη έγκυρα δεδομένα.

Απαντήθηκε 22/03/2014 στις 11:22
πηγή χρήστη

ψήφοι
0

Προσθέτοντας ένα Validatorμε το περιβάλλον είναι ένα καλό πρώτο βήμα, αλλά δεν νομίζω ότι θα αλληλεπιδράσει με τίποτα εκτός και αν το ζητήσετε. Τα παιδιά την άνοιξη δεδομένων μπορεί πιθανώς να πει με σιγουριά, αλλά νομίζω ότι θα πρέπει να δηλώσουν ρητά κάποια ακροατές, καθώς και. Υπάρχει ένα παλιό blog σχετικά με τη λειτουργία , αλλά μπορείτε να βρείτε ότι με googling τόσο εύκολα όσο μπορώ.

Αν νομίζετε ότι θα υπάρξει μια χρήσιμη λειτουργία αυτόματης ρύθμισης στην Άνοιξη εκκίνησης , μπορείτε να κάνετε μια λεπτομερή πρόταση για GitHub.

Απαντήθηκε 21/03/2014 στις 22:53
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more