Проблема при публикации данных при весенней загрузке Rest Api- org.springframework.web.bind.MethodArgumentNotValidException - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в весенней загрузке остальные API. Я создал контроллер отдыха категории, используя который я отправляю данные в свою базу данных mysql.

Я также добавил spring-jpa и hibernate в свой проект, и он работает нормально. Когда я публикую данные, используя Bootstrap форму и JqueryAjax, я получаю org.springframework.web.bind.MethodArgumentNotValidException в консоли intellij и 400 в консоли браузера, когда я нажимаю кнопку подтверждения в моей форме.

код моего отдыха.

private CategoryRepository categoryRepository;

    //@GetMapping("/Categories")
    @RequestMapping(value="/Categories", method=RequestMethod.GET)
    public Page<Category> getAllCategories(Pageable pageable) {
        return categoryRepository.findAll(pageable);
    }


    //@PostMapping("/Categories")
    @RequestMapping(value="/Categories", method=RequestMethod.POST)
    public Category createCategory( @Valid @RequestBody Category Category) {
        return categoryRepository.save(Category);
    }

мой js - ajax файл

$(document).ready(
    function() {

        // SUBMIT FORM
        $("#Cateform").submit(function(event) {
            // Prevent the form from submitting via the browser.
            event.preventDefault();
            ajaxPost();
        });

        function ajaxPost() {
            // PREPARE FORM DATA
            var formData = {

                CategoryId : $("#CatId").val(),
                CategoryName : $("#CatName").val(),
                CategoryDescription : $("#Catdesc").val()
            }

            // DO POST
            $.ajax({
                type : "POST",
                contentType : "application/json",
                url : "http://localhost:8080/Categories",
                data : JSON.stringify(formData),
                dataType : 'json',
                success : function(result) {
                    if (result.status == "success") {
                        $("#postResultDiv").html(
                            "" + result.data.CategoryName
                               + result.data.CategoryDescription
                            + "Post Successfully! <br>"
                            + "---> Congrats !!" + "</p>");
                    } else {
                        $("#postResultDiv").html("<strong>Error</strong>");
                    }
                    console.log(result);
                },
                error : function(e) {
                    alert("Error!")
                    console.log("ERROR: ", e);
                }
            });

        }
    })

мой Bootstrap форма

<form id="Cateform">

        <div class="form-group">
            <input type="hidden" class="form-control" id="CatId" placeholder="Enter Book Id" name="CategoryId">
        </div>

        <div class="form-group">
            <label for="CatName">Category Name:</label>
            <input type="text" class="form-control" id="CatName"  name="CategoryName">
        </div>

        <div class="form-group">
            <label for="Catdesc">Category Desc:</label>
            <input type="text" class="form-control" id="Catdesc"  name="CategoryDescription">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
    </form>

мой модель категории

@Entity
@Table(name = "Categories")
public class Category extends AuditingModel {


    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Integer categoryId;
    public String CategoryName;

    @NotNull
    @Size(max = 250)
    public String Description;


 //gettter and setters
}

Хорошо, что ... я могу публиковать данные с помощью пользовательского интерфейса Swagger и PostMan, но я не знаю, что происходит, когда я публикую данные с использованием формы и не получаю аргумент метода допустимое исключение для моего поля описания модели категории. Я установил это поле как notnull в модели, но почему оно дает ошибку при публикации данных из пользовательского интерфейса, а не из Swagger-UI и Postman.

ниже приведена точная ошибка, которую я получаю в консоли intellij, когда нажимаю на кнопку submit в форме

** Решено [org.springframework.web.bind.MethodArgumentNotValidException: сбой проверки для аргумента [0] в публикации c edu.ait.shoppingCart.Dto.Category edu.ait.shoppingCart.Controllers .CategoryController.createCategory (edu.ait.shoppingCart.Dto.Category): [Ошибка поля в объекте 'category' в поле 'Description': отклоненное значение [null]; коды [NotNull.category.Description, NotNull.Description, NotNull. java .lang.String, NotNull]; Аргументы [org.springframework.context.support.DefaultMessageSourceResolvable: codes [category.Description, Description]; аргументы []; сообщение по умолчанию [Описание]]; сообщение по умолчанию [не должно быть нулевым]]] ** ошибка браузера

1 Ответ

0 голосов
/ 24 апреля 2020

Обратите внимание, что проблема в совпадении имени переменной. Вызов ajax отправляет описание CategoryDescription, в то время как объект ожидает Описание, также обратите внимание на регистр C для categoryId. Ajax call отправляет заглавную C, в то время как объект был объявлен маленькой буквой c

...