Spring MVC with Hibernate Validator Mandatory for the database field, but not in the application

StackOverflow https://stackoverflow.com/questions/20769764

سؤال

Problem with BindingResult hasErrors() in validation. I have this code:

@RequestMapping(value = "/entity", params = "form", method = RequestMethod.POST)
  public String submit(@Valid @ModelAttribute Entity entity, BindingResult result) {
  Authentication auth = SecurityContextHolder.getContext().getAuthentication();
  entity.setCreatedBy(auth.getName());
  if (result.hasErrors()) {
     //Here the error of createdBy is null
     return "entity/new";
  } else {
     entityService.save(entity);
     return "redirect:/entity/list";
  }
}

the entity class:

@Entity
@Table(name = "TABLE_X")
public class Entity implements Serializable {
   private static final long serialVersionUID = 1L;
   @Id
   @NotNull
   @Column(name = "primary_key")
   private String primaryKey;
   @NotNull
   @Column(name = "created_by")
   private String createdBy;
   //getters and setter
}

I need set the value of createdBy in controller but always show "may not be null" in view. Please help.

Spring MVC 4, Hibernate Validator 5, Database Oracle 11g

هل كانت مفيدة؟

المحلول

You entity object is validated before Spring MVC invokes the submit() method. The result object is created at the same time. This line:

entity.setCreatedBy(auth.getName());

has absolutely no effect on the outcome of result.hasErrors().

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top