Проверка на стороне сервера, похоже, не работает в SpringBoot 2.3.1.RELEASE - PullRequest
0 голосов
/ 20 июня 2020

У меня есть класс POJO и его метод API. Я хочу проверить ввод данных в пользовательское поле, но, похоже, это не работает. Я использовал аннотацию @Size () в своем классе POJO, но она не работает. Ниже приведен фрагмент моей структуры logi c.

Класс POJO

@Entity
public class Address {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long addressId;

    @NotNull
    @Size(min=10, max=100, message="Please enter between {min}-{max} characters")
    private String addressLine;

Метод класса API

@PostMapping(value="/add", produces = MediaType.APPLICATION_JSON_VALUE, consumes=MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody String addAddress( @RequestBody @Valid Address address, BindingResult result)
    {
        if(result.hasErrors()) {
            return ErrorUtils.customErrors(result.getAllErrors());
        } else {
            return addressService.addAddress(address);
        }
    }

, и я создаю JSON запрос для addAddress (/ add) метода и выдает сообщение об ошибке в форме пользовательского интерфейса. Мой обработчик ответов JSON находится в валидаторе jquery, как показано ниже ..

function saveRequestedData(frm, data, type) {
    $.ajax({
        contentType:"application/json; charset=utf-8",
        type:frm.attr("method"),
        url:frm.attr("action"),
        dataType:'json',
        data:JSON.stringify(data),
        success:function(data) {
            if(data.status == "success") {
            alert(data.message);
            toastr.success(data.message, data.title, {
                closeButton:true
            });
            fetchList(type);
            }
            else {
                toastr.error(data.message, data.title, {
                    allowHtml:true,
                    closeButton:true
                });
            }
        }
    });
}   

Кажется, работает только @NotNull, а не аннотация @Size и @Valid. В соответствии с примечаниями к выпуску Spring Boot , Начиная с версии 2.3.0. RELEASE Spring Boot Web и WebFlux больше не зависят от стартера проверки, поэтому я добавил Spring-boot-starter-validation в свой файл pom. xml вручную. Но вроде ничего не работает.

1 Ответ

0 голосов
/ 20 июня 2020

Вы можете использовать приведенный ниже код в качестве справки.

@Validated
@RestController
public AddressController{

@Autowired
private AddressService addressService;

@PostMapping(value="/add", produces = MediaType.APPLICATION_JSON_VALUE, consumes=MediaType.APPLICATION_JSON_VALUE)
    public @ResponseBody String addAddress( @RequestBody @Valid Address address, BindingResult result){
        if(result.hasErrors()) {
            return ErrorUtils.customErrors(result.getAllErrors());
        } else {
            return addressService.addAddress(address);
        }
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...