1

でフォーム検証をセットアップしようとしていますSpring 3.1。次のように、注釈を使用してモデルを検証しています。

モデル:

@Column(name = "mailAddress", nullable = false)
@Email
private String mailAddress;

@Column(name = "school", nullable = false)
@NotBlank
@Size(min = 3, max = 100)
private String school;

コントローラ:

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    public String addBooking(
            @ModelAttribute("new-booking") @Valid Booking booking,
            BindingResult result, Map<String, Object> model) {

        if (result.hasErrors()) {
            return "booking";
        }
            return "success";
     }

問題は、 を検証しますschoolが、 を検証しないことmailAddressです。空を入力すると、mailAddressそれが受け入れられます。

4

2 に答える 2

4

おそらく、検証の問題は、@Email検証アノテーションを使用して、バリデーターが「myname@service」のような拡張子で終わらない「myname@service」のような形式の電子メールも有効であると見なしたという事実に関連している可能性があると思います(たとえば) .com

これがあなたの問題である場合...これは、次の形式の電子メールがある場合も考慮されているため、正常です: yourname@localhost (内部電子メールアドレス)

従来の電子メール (形式: myname@someservice.com) を検証する場合は、カスタム バリデーターを作成する必要があると思います。

私はあなたの問題を理解したことを願っています

于 2013-02-07T18:43:13.567 に答える
2

問題を見つけました。Email Validator は空白のメールを受け入れます。これを修正するには、 a を追加するだけです@NotBlank。実際、私は nullable = false で十分だと思っていましたが、そうではありませんでした。

@Column(name = "mailAddress", nullable = false)
@Email
@NotBlank
private String mailAddress;
于 2013-02-08T09:35:40.283 に答える