Я новичок в весенней загрузке остальные 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]; аргументы []; сообщение по умолчанию [Описание]]; сообщение по умолчанию [не должно быть нулевым]]] ** ошибка браузера