I am using Spring MVC + thymeleaf and when I am submitting my form it gives me all the time validation error(Null) in the binding result. Any advise would be appreciated! Thanks!
Error message
"Field error in object 'createForm' on field 'authorId': rejected value [null]; codes [NotNull.createForm.authorId,NotNull.authorId,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [createForm.authorId,authorId]; arguments []; default message [authorId]]; default message [may not be null]"
@NotNull
@Size(min= 2, max = 100, message = "your title should be between 2 and 100 symbols")
private String title;
@NotNull
@Size(min = 2, message = "Please fill your message")
private String content;
@DateTimeFormat(pattern = "yyyy-mm-dd")
private Date date;
@NotNull
private String authorId;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getId() {
return authorId;
}
public void setId(String authorId) {
this.authorId = authorId;
}
}
And my HTML
<form id="create-form" method="post" th:object="${createForm}">
<div><label for="title">Title:</label></div>
<input id="title" type="text" name="title" th:value="*{title}"/>
<span class="formError" th:if="${#fields.hasErrors('title')}" th:errors="*{title}">Invalid title</span>
<div><label for="content">Content:</label></div>
<textarea name="content" rows="30" cols="100" id="content" th:value="*{content}"></textarea>
<span class="formError" th:if="${#fields.hasErrors('content')}" th:errors="*{content}">Invalid content</span>
<div><label for="date">Date:</label></div>
<input id="date" type="date" name="date" th:value="*{date}"/>
<span class="formError" th:if="${#fields.hasErrors('date')}" th:errors="*{date}">Invalid date</span>
<div><label for="authorId">Author ID:</label></div>
<input id="authorId" type="text" name="authorId" th:value="*{authorId}"/>
<span class="formError" th:if="${#fields.hasErrors('id')}" th:errors="*{authorId}">Invalid id</span>
<br/>
<br/>
<div><input type="submit" value="Create"/></div>
</form>
@NotNull
isn'tnull protection service
. It's your contract which says that you will manage by yourself not to putnull
there.