dEs*_*ZER 1 java spring spring-data angular5
我正在尝试检查用户名在spring-boot中是否唯一。我想将结果作为JSON对象发送。这是REST控制器
@RequestMapping(value="/checkEmailUnique",method=RequestMethod.POST)
public String checkEmailUnique(@RequestBody String username){
AppUser app = userRepo.findByUsername(username);
if(app!=null){
// I want to return somthing like emailNotTaken: true
}
else{
// and here : emailNotTaken: false
}
}
Run Code Online (Sandbox Code Playgroud)
我想获得角度结果,以便在组件中显示错误消息。我怎样才能做到这一点?
角边
客户服务
checkEmailNotTaken(email:string){
if(this.authService.getToken()==null) {
this.authService.loadToken();
}
return this.http.post(this.host+
"/checkEmailUnique/",{email},{headers:new HttpHeaders({'Authorization':this.authService.getToken()})});
}
Run Code Online (Sandbox Code Playgroud)
在client.component.ts中
ngOnInit() {
this.form = this.formBuilder.group({
prenom: ['', Validators.required],
nom: ['', Validators.required],
tel: ['', Validators.required],
cin: ['', Validators.required],
username: ['', Validators.required , Validators.email , this.validateEmailNotTaken.bind(this)],
passwordG: this.formBuilder.group({
password: ['',[Validators.required,Validators.minLength(9)]],
Confirmationpassword : ['',[Validators.required,Validators.minLength(9)]]
}, {validator: passwordMatch})
});
}
validateEmailNotTaken(control: AbstractControl) {
return this.clientService.checkEmailNotTaken(control.value).map(res => {
return // what to do here ?
});
}
Run Code Online (Sandbox Code Playgroud)
编辑
@RequestMapping(value="/checkEmailUnique",method=RequestMethod.POST)
public EmailStatusCheckJson checkEmailUnique(@RequestBody final String username){
final EmailStatusCheckJson returnValue = new EmailStatusCheckJson();
AppUser app = userRepo.findByUsername(username);
if(app!=null){
returnValue.setEmailIsAvailable(false);
}
else{
returnValue.setEmailIsAvailable(true);
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是spring-boot-starter-web,则您的项目已设置为返回JSON。代替使用String作为您的返回值checkEmailUnique,使用您创建的对象类型。
这是一个例子:
public class EmailStatusCheckJson
{
private Boolean emailIsAvailable;
public Boolean getEmailIsAvailable()
{
return emailIsAvailable;
}
public void setEmailIsAvailable(
final Boolean newValue)
{
emailIsAvailable = newValue
}
}
@RequestMapping(value="/checkEmailUnique",method=RequestMethod.POST)
public EmailStatusCheckJson checkEmailUnique(@RequestBody final String username)
{
final EmailStatusCheckJson returnValue = new EmailStatusCheckJson();
if (...) // email is available.
{
returnValue.setEmailIsAvailable(true);
}
else
{
returnValue.setEmailIsAvailable(false);
}
return returnValue;
}
Run Code Online (Sandbox Code Playgroud)
编辑添加了更多示例。