Anonymous
Feder -Boot -Validierungsfehleranforderung schlecht 400
Post
by Anonymous » 03 Apr 2025, 09:29
Ich entwickle eine CRUD -API mit einer Post -Methode, wenn diese Methode in meinem Postboten getestet wird
Code: Select all
2023-02-15T13:34:35.528-03:00 WARN 8792 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity com.api.order_control.controllers.OrderController.saveOrder(com.api.order_control.dtos.OrderDto) with 2 errors: [Field error in object 'orderDto' on field 'doorNumber': rejected value [null]; codes [NotBlank.orderDto.doorNumber,NotBlank.doorNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [orderDto.doorNumber,doorNumber]; arguments []; default message [doorNumber]]; default message [must not be blank]] [Field error in object 'orderDto' on field 'block': rejected value [null]; codes [NotBlank.orderDto.block,NotBlank.block,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [orderDto.block,block]; arguments []; default message [block]]; default message [must not be blank]] ]
< /code>
Ich konnte nicht verstehen, warum mein Blank mit dieser Methode nicht funktionieren kann und warum dieser Fehler. Kann mir jemand helfen? < /p>
Modell < /p>
package com.api.order_control.models;
import jakarta.persistence.*;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.UUID;
@Entity
@Table(name = "restaurant_orders")
public class OrderModel implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private UUID id;
@Column(nullable = false, length = 11)
private String customerName;
@Column(nullable = false, length = 15)
private String phoneNumber;
@Column(nullable = false, length = 25)
private String address;
@Column(nullable = false, length = 10)
private String doorNumber;
@Column(length = 5)
private String block;
@Column(nullable = false, length = 30)
private String orderNote;
@Column(nullable = false)
private Float price;
@Column(nullable = false)
private LocalDateTime registrationDate;
public UUID getId() {
return id;
}
public void setId(UUID id) {
this.id = id;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getDoorNumber() {
return doorNumber;
}
public void setDoorNumber(String doorNumber) {
this.doorNumber = doorNumber;
}
public String getBlock() {
return block;
}
public void setBlock(String block) {
this.block = block;
}
public String getOrderNote() {
return orderNote;
}
public void setOrderNote(String order) {
this.orderNote = orderNote;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
public LocalDateTime getRegistrationDate() {
return registrationDate;
}
public void setRegistrationDate(LocalDateTime registrationDate) {
this.registrationDate = registrationDate;
}
}
< /code>
dto pack < /p>
package com.api.order_control.dtos;
import jakarta.validation.constraints.NotBlank;
public class OrderDto {
@NotBlank
private String customerName;
@NotBlank
private String phoneNumber;
@NotBlank
private String address;
@NotBlank
private String doorNumber;
@NotBlank
private String block;
@NotBlank
private String orderNote;
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
public String getPhoneNumber() {
return phoneNumber;
}
public void setPhoneNumber(String phoneNumber) {
this.phoneNumber = phoneNumber;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String doorNumber() {
return doorNumber;
}
public void doorNumber(String doorName) {
this.doorNumber = doorName;
}
public String getBlock() {
return block;
}
public void setBlock(String block) {
this.block = block;
}
public String getOrderNote() {
return orderNote;
}
public void setOrderNote(String orderNote) {
this.orderNote = orderNote;
}
}
< /code>
Controller mit Post < /p>
package com.api.order_control.controllers;
import com.api.order_control.dtos.OrderDto;
import com.api.order_control.models.OrderModel;
import com.api.order_control.services.OrderService;
import jakarta.validation.Valid;
import org.springframework.beans.BeanUtils;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.time.ZoneId;
@RestController
@CrossOrigin(origins = "*", maxAge = 3600)
@RequestMapping("/orders")
public class OrderController {
final OrderService orderService;
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PostMapping
public ResponseEntity saveOrder(@RequestBody @Valid OrderDto orderDto) {
var orderModel = new OrderModel();
BeanUtils.copyProperties(orderDto, orderModel);
orderModel.setRegistrationDate(LocalDateTime.now(ZoneId.of("UTC")));
orderModel.setPrice(70.8f);
return ResponseEntity.status(HttpStatus.CREATED).body(orderService.save(orderModel));
}
}
< /code>
Ich hatte bereits einen leeren Fehler, weil ich einen Float verwendet habe, aber in diesem Fall "numberdoor" ist nur eine Zeichenfolge. Was ist der Grund für diesen Fehler?{
"customerName": "Ryan",
"phoneNumber": "1 99859 5854",
"address": "St Street Vl 190",
"doorNumber": "5",
"orderNote": "Pepperoni Pizza"
}
1743665352
Anonymous
Ich entwickle eine CRUD -API mit einer Post -Methode, wenn diese Methode in meinem Postboten getestet wird[code]2023-02-15T13:34:35.528-03:00 WARN 8792 --- [nio-8080-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public org.springframework.http.ResponseEntity com.api.order_control.controllers.OrderController.saveOrder(com.api.order_control.dtos.OrderDto) with 2 errors: [Field error in object 'orderDto' on field 'doorNumber': rejected value [null]; codes [NotBlank.orderDto.doorNumber,NotBlank.doorNumber,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [orderDto.doorNumber,doorNumber]; arguments []; default message [doorNumber]]; default message [must not be blank]] [Field error in object 'orderDto' on field 'block': rejected value [null]; codes [NotBlank.orderDto.block,NotBlank.block,NotBlank.java.lang.String,NotBlank]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [orderDto.block,block]; arguments []; default message [block]]; default message [must not be blank]] ] < /code> Ich konnte nicht verstehen, warum mein Blank mit dieser Methode nicht funktionieren kann und warum dieser Fehler. Kann mir jemand helfen? < /p> Modell < /p> package com.api.order_control.models; import jakarta.persistence.*; import java.io.Serializable; import java.time.LocalDateTime; import java.util.UUID; @Entity @Table(name = "restaurant_orders") public class OrderModel implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private UUID id; @Column(nullable = false, length = 11) private String customerName; @Column(nullable = false, length = 15) private String phoneNumber; @Column(nullable = false, length = 25) private String address; @Column(nullable = false, length = 10) private String doorNumber; @Column(length = 5) private String block; @Column(nullable = false, length = 30) private String orderNote; @Column(nullable = false) private Float price; @Column(nullable = false) private LocalDateTime registrationDate; public UUID getId() { return id; } public void setId(UUID id) { this.id = id; } public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getDoorNumber() { return doorNumber; } public void setDoorNumber(String doorNumber) { this.doorNumber = doorNumber; } public String getBlock() { return block; } public void setBlock(String block) { this.block = block; } public String getOrderNote() { return orderNote; } public void setOrderNote(String order) { this.orderNote = orderNote; } public Float getPrice() { return price; } public void setPrice(Float price) { this.price = price; } public LocalDateTime getRegistrationDate() { return registrationDate; } public void setRegistrationDate(LocalDateTime registrationDate) { this.registrationDate = registrationDate; } } < /code> dto pack < /p> package com.api.order_control.dtos; import jakarta.validation.constraints.NotBlank; public class OrderDto { @NotBlank private String customerName; @NotBlank private String phoneNumber; @NotBlank private String address; @NotBlank private String doorNumber; @NotBlank private String block; @NotBlank private String orderNote; public String getCustomerName() { return customerName; } public void setCustomerName(String customerName) { this.customerName = customerName; } public String getPhoneNumber() { return phoneNumber; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String doorNumber() { return doorNumber; } public void doorNumber(String doorName) { this.doorNumber = doorName; } public String getBlock() { return block; } public void setBlock(String block) { this.block = block; } public String getOrderNote() { return orderNote; } public void setOrderNote(String orderNote) { this.orderNote = orderNote; } } < /code> Controller mit Post < /p> package com.api.order_control.controllers; import com.api.order_control.dtos.OrderDto; import com.api.order_control.models.OrderModel; import com.api.order_control.services.OrderService; import jakarta.validation.Valid; import org.springframework.beans.BeanUtils; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.time.LocalDateTime; import java.time.ZoneId; @RestController @CrossOrigin(origins = "*", maxAge = 3600) @RequestMapping("/orders") public class OrderController { final OrderService orderService; public OrderController(OrderService orderService) { this.orderService = orderService; } @PostMapping public ResponseEntity saveOrder(@RequestBody @Valid OrderDto orderDto) { var orderModel = new OrderModel(); BeanUtils.copyProperties(orderDto, orderModel); orderModel.setRegistrationDate(LocalDateTime.now(ZoneId.of("UTC"))); orderModel.setPrice(70.8f); return ResponseEntity.status(HttpStatus.CREATED).body(orderService.save(orderModel)); } } < /code> Ich hatte bereits einen leeren Fehler, weil ich einen Float verwendet habe, aber in diesem Fall "numberdoor" ist nur eine Zeichenfolge. Was ist der Grund für diesen Fehler?{ "customerName": "Ryan", "phoneNumber": "1 99859 5854", "address": "St Street Vl 190", "doorNumber": "5", "orderNote": "Pepperoni Pizza" } [/code]