Я хочу написать внутреннюю сторону моего приложения с пружинной загрузкой, а переднюю - с угловой.Я хотел бы проверить информацию в полях формы на стороне сервера для безопасности.Чтобы попробовать эту работу, я сначала создал модель с именем Visitor.java, и все коды выглядят следующим образом.
Visitor.java
import javax.validation.constraints.Email;
import javax.validation.constraints.NotNull;
public class Visitor {
@NotNull(message = "This field cannot be null.")
@Email(message = "Invalid.")
private String email;
@NotNull(message = "This field cannot be null.")
private String password;
public Visitor() {
}
public Visitor(String email, String password) {
this.email = email;
this.password = password;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Visitor{" +
"email='" + email + '\'' +
", password='" + password + '\'' +
'}';
}
}
SignIn.java (RestController)
import com.demotest.example.demotest.model.Visitor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.validation.FieldError;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequestMapping("/api")
@CrossOrigin
public class Sign {
@PostMapping("/signin")
public ResponseEntity<Object> signIn(@RequestBody @Valid Visitor visitor, BindingResult bindingResult){
if(bindingResult.hasErrors()){
System.err.println("error!");
Map<String, String> errors = new HashMap<>();
for (FieldError error:bindingResult.getFieldErrors()){
errors.put(error.getField(), error.getDefaultMessage());
}
return new ResponseEntity<>(errors, HttpStatus.NOT_ACCEPTABLE);
}
System.err.println("nice!");
return new ResponseEntity<>(HttpStatus.OK);
}
}
sign-in.component.ts
import { Component, OnInit } from '@angular/core';
import {HttpClient} from "@angular/common/http";
@Component({
selector: 'app-sign-in',
templateUrl: './sign-in.component.html',
styleUrls: ['./sign-in.component.css']
})
export class SignInComponent implements OnInit {
model:loginViewModel = {
email:'',
password:''
};
sendLoginViewModel():void{
//alert(this.model.email);
let url = "http://localhost:7070/api/signin";
this.http.post(url, this.model).subscribe(
res => {
//location.reload();
},
err => {
console.log(err);
}
);
}
constructor(private http: HttpClient) { }
ngOnInit() {
}
}
export interface loginViewModel{
email:string;
password:string;
}
sign-in.component.html
<div class="container mt-5">
<div class="col-lg-4 card mx-auto px-0">
<div class="card-body">
<div class="row mt-4">
<div class="col mx-auto text-center" style="font-size: 23.1px; padding-right: 37px; padding-left: 37px;">
www.sss.com
</div>
</div>
<div class="row">
<div class="col mx-auto text-center" style="font-size: 40px; padding-right: 37px; padding-left: 37px;">
Welcome
</div>
</div>
<form #f="ngForm" (submit)="sendLoginViewModel()">
<div class="row">
<div class="col mt-5 px-0 mx-auto">
<mat-form-field appearance="outline" class="col mx-auto">
<mat-label>Email</mat-label>
<input matInput placeholder=""
name="email"
[(ngModel)]="model.email"
#name="ngModel"/>
<mat-icon matSuffix>email</mat-icon>
</mat-form-field>
<!-- todo: Error div i will be added here.-->
</div>
</div>
<div class="row">
<div class="col px-0 mx-auto">
<mat-form-field appearance="outline" class="col mx-auto">
<mat-label>Password</mat-label>
<input matInput placeholder="" name="password" [(ngModel)]="model.password">
<mat-icon matSuffix>lock</mat-icon>
</mat-form-field>
<!-- todo: Error div i will be added here.-->
</div>
</div>
<button type="submit" class="col py-1 mx-auto mt-3 mb-3" mat-flat-button color="primary">
Login
</button>
</form>
</div>
</div>
</div>
console.log (err);
Я хочу использовать следующее error: {email: "Invalid."}
На html-странице.email
- это заголовок ошибки, а "Invalid."
- содержимое сообщения об ошибке.Поскольку эти поля журнала отправляются Back-End, они являются безопасной информацией, и я хочу использовать их на странице html.Как я могу написать в Если в сообщении об ошибке есть электронное письмо, распечатайте сообщение. ?
HttpErrorResponse {headers: HttpHeaders, status: 406, statusText: "OK", url: "http://localhost:7070/api/signin", ok: false, …}
error: {email: "Invalid."}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure response for http://localhost:7070/api/signin: 406 OK"
name: "HttpErrorResponse"
ok: false
status: 406
statusText: "OK"
url: "http://localhost:7070/api/signin"
__proto__: HttpResponseBase
В настоящее время я могу проверить фон весной, но не могураспечатать сообщение об ошибке на sign-in.component.html.Я запутался, чтобы напечатать входящую информацию об ошибке.Как распечатать сообщение об ошибке?