2

私はSpringの学習を始めたばかりで、フォームの検証に固執しています(dao/serviceとすべてのデフォルトセットがあります)

フィールドに 3 つ以上のシンボルが挿入されないように検証タスクを作成しようとしています

@Size (min = 1, max = 3)

その後、フォームデータをDBに挿入してホームページに出力したいのですが、データが検証を満たし、1〜3個の記号で構成されている場合はすべて問題ありませんが、これらの条件が満たされていない場合は4を挿入しようとします以上のシンボル、私は を受け取りHTTP STATUS 400ます。DB 挿入もビュー出力もありません。検証があることは理解していますが、なぜ表示されるのかわかりませんHTTP STATUS 400

@Controller
public class BookController {

    @Autowired
    private BookService bookService;

    @RequestMapping(value = "addBook", method = RequestMethod.GET)
    public String addUser(Model model) {

        model.addAttribute("user", new ValidationField());
        model.addAttribute("book", new Book());

        return "addBook";
    }

    @RequestMapping(value = "addBook", method = RequestMethod.POST)
    public String addBook( @ModelAttribute("user") @Valid ValidationField validationField, Book book, BindingResult result) {
        /*this.user(book, result);*/

        if (result.hasErrors()) {
            return "addBook";
        }
        this.bookService.addBook(book);

        return "redirect:/";
    }
}

検証クラス

public class ValidationField {

    @Size(min = 1, max = 3)
    private String name;

    @Size(min = 1, max = 3)
    private String genre;
}

および addBook.jsp を表示

<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@taglib prefix="t" tagdir="/WEB-INF/tags" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<t:tamplate>
  <form:form method="post" action="addBook" commandName="book" modelAttribute="user">
      <form:errors path="*" cssClass="alert alert-danger" element="div" />
        <table>
            <tr>
                <td><form:input path="name"/></td>
                <td><form:errors path="name"/></td>
            </tr>
            <tr>
                <td><form:input path="genre" /></td>
                <td><form:errors path="genre"/></td>
            </tr>
            <tr>
                <td colspan="2"> <input type="submit" value="add book"> </td>
            </tr>
        </table>
    </form:form>
</t:tamplate>
4

1 に答える 1