0

I try to perform validation using javax annotations where data transfer object for User is being processed (UserDTO) but without expected success.

Here is controller:

@Controller
public class AuthenticationController {

@CrossOrigin(allowCredentials = "true")
@RequestMapping(value= "/postAccountData", method = RequestMethod.POST)

public @ResponseBody String postAccountData(@Valid UserDTO userData, 
BindingResult result) { 

System.out.println(" Is userData not null?  " + userData != null);

System.out.println("BindingResult : " + result + " has errors: " + 
result.hasErrors());

return "Response from POST account!";

}

}

Here is the object (UserDTO) :

public class UserDTO {

@NotNull
@NotEmpty 
public String firstName;

@NotNull
public String lastName;

@NotNull
@NotEmpty
public String password;
public String matchingPassword;

@NotNull
@NotEmpty
@NotBlank
public String email;

@NotNull
@NotBlank
public String description;

}

When I use Postman to sent (POST) data then it is correctly parsed as an UserDTO object but I am not able to trigger any error thus hasErrors() method returns false at each invocation when null fields are present in retrieved UserDTO object. What am I missing?

Sinny
  • 167
  • 1
  • 10

3 Answers3

0

It is missing @RequestBody

public @ResponseBody String postAccountData(@RequestBody @Valid UserDTO userData, 
      BindingResult result) { 

      System.out.println(" Is userData not null?  " + userData != null);

      System.out.println("BindingResult : " + result + " has errors: " + 
      result.hasErrors());

      return "Response from POST account!";
Jonathan JOhx
  • 5,784
  • 2
  • 17
  • 33
0

Try adding @Settter above UserDTO. Library = lombok

0

Just tried your code 'as it is' in a spring boot application. Working fine, even without @RequestBody. I suggest to check your imports and validation library.

YoManTaMero
  • 391
  • 4
  • 10