Domanda

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

È stato utile?

Soluzione

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().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top