Я пытаюсь научиться весенней загрузке, но у меня есть одна проблема, которую я не понимаю, как решить и что конкретно не работает.У меня есть блог, и когда я пытаюсь создать новый пост (статью) в блоговом бланке, он терпит неудачу.Пожалуйста, если возможно, помогите мне встать на дорогу и понять, в чем проблема, потому что я не вижу, где происходит неправильное преобразование.
Ожидаемое поведение: Новая строка записи добавлена в базу данных
ТекущийПоведение: Я получил несовпадение типов ошибок.
Сообщение об ошибке: введите описание изображения здесь
Post.class
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "post_id")
private Long id;
@Column(name = "title", nullable = false)
@Length(min = 5, message = "*Pavadinimas turi turėti bent 5 simbolius")
@NotEmpty(message = "*Įrašykite pavadinimą")
private String title;
@Column(name = "body", columnDefinition = "TEXT")
private String body;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date", nullable = false, updatable = false)
@CreationTimestamp
private Date createDate;
@ManyToOne
@JoinColumn(name = "user_id", referencedColumnName = "user_id", nullable = false)
@NotNull
private User user;
@OneToMany(mappedBy = "post", cascade = CascadeType.REMOVE)
private Collection<Comment> comments;
User.class
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "user_id")
private int id;
@Column(name = "email", unique = true, nullable = false)
@Email(message = "*Netinkamas El. Pašto formatas")
@NotEmpty(message = "*Įrašykite El. Paštą")
private String email;
@Column(name = "username", nullable = false, unique = true)
@Length(min = 5, message = "*Slapyvardis turi turėti bent 5 simbolius")
@NotEmpty(message = "*Įrašykite slapyvardį")
private String username;
@Column(name = "password", nullable = false)
@Length(min = 5, message = "*Slaptažodis turi turėti bent 5 simbolius")
@NotEmpty(message = "*Įrašykite slaptažodį")
@JsonIgnore
private String password;
@Column(name = "name")
@NotEmpty(message = "*Įrašykite savo vardą")
private String name;
@Column(name = "last_name")
@NotEmpty(message = "*Įrašykite savo pavardę")
private String lastName;
@Column(name = "profession")
@NotEmpty(message = "*Pasirinkite savo profesija")
private String profession;
@Column(name = "active", nullable = false)
private boolean active;
@Column(name = "tenant", nullable = false)
private String tenant;
@ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinTable(name = "user_role", joinColumns = @JoinColumn(name = "user_id"), inverseJoinColumns = @JoinColumn(name = "role_id"))
private Collection<Role> roles;
@OneToMany(mappedBy = "user")
private Collection<Post> posts;
}
PostController
@RequestMapping(value = "/newPost", method = RequestMethod.POST)
public String createNewPost(@Valid Post post,
BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
for (Object object : bindingResult.getAllErrors()) {
if (object instanceof FieldError) {
FieldError fieldError = (FieldError) object;
System.out.println("Field Error "+fieldError.getCode()+"\n");
System.out.println(fieldError.getObjectName()+"\n");
System.out.println(fieldError.getDefaultMessage()+"\n");
}
if (object instanceof ObjectError) {
ObjectError objectError = (ObjectError) object;
System.out.println("Object Error"+objectError.getCode());
System.out.println(objectError.getObjectName()+"\n");
System.out.println(objectError.getDefaultMessage()+"\n");
}
}
return "/postForm";
} else {
postService.save(post);
return "redirect:/blog/" + post.getUser().getUsername();
}
}
Просмотр сообщений
<div class="row align-items-center justify-content-center" style="margin-top:20px">
<div class="col-xs-12 col-sm-8 col-md-6 col-sm-offset-2 col-md-offset-3">
<form autocomplete="off" action="#" th:action="@{/newPost}"
th:object="${post}" method="post" class="form-horizontal"
role="form">
<h2 class="text-center">Jūsų naujas straipsnis</h2>
<div class="form-group">
<label th:if="${#fields.hasErrors('title')}" th:errors="*{title}"
class="alert alert-danger"></label>
<input type="text" th:field="*{title}" placeholder="Pavadinimas"
class="form-control input-lg"/>
</div>
<div class="form-group">
<label th:if="${#fields.hasErrors('body')}" th:errors="*{body}"
class="alert alert-danger"></label>
<textarea th:field="*{body}" placeholder="Tekstas"
class="form-control input-lg"/>
</div>
<input type="hidden" th:field="*{user}"/>
<input type="hidden" th:field="*{id}"/>
<div class="form-group">
<input type="submit" class="btn btn-primary btn-block" value="Saugoti"/>
</div>
</form>
</div>
</div>
<div class="row" th:if="${post.id}">
<div class="col-md-6 col-md-offset-3">
<form action="#" th:action="@{'/post/{id}'(id=${post.id})}" th:method="delete"
class="form-horizontal">
<div class="form-group">
<input type="hidden" name="_method" value="delete"/>
<button type="submit" class="btn btn-danger btn-block" th:text="Ištrinti">Ištrinti</button>
</div>
</form>
GitHub репозиторий: https://github.com/Manvas/mentor/tree/develop