JSR 303 Bean验证+ JavaScript客户端验证

随着 Web 应用程序变得越来越复杂,并涉及到大量的表单数据提交,保证数据有效性和正确性变得越来越重要。为了帮助开发人员提高表单数据验证的效率,Java 企业版(Java EE)中引入了 JSR 303 规范,定义了一套基于注解的 Bean 验证框架。

JSR 303 Bean验证

JSR 303 规范定义了一套基于注解的 Bean 验证框架,可以方便地对 JavaBean 对象进行数据验证。使用 JSR 303 Bean 验证,我们可以通过编写简单的注解来指定验证规则,并且可以很容易地将这些规则应用于我们的 JavaBean 对象。以下是一个简单的示例:

------ ----- ---- -

    ---------------- - ----------
    ------- ------ ---------

    --------- - -- --- - --- ------- - -------- ----- - ----- ----
    ------- ------ ---------

    -- ------- --- -------
-

在上面的示例中,我们使用了 @NotNull@Size 注解来指定字段的验证规则。@NotNull 表示该字段不能为空,@Size 表示该字段的长度必须在指定范围内。使用 JSR 303 Bean 验证时,只需要在我们的 Controller 中调用 javax.validation.Validatorvalidate() 方法,即可对 JavaBean 对象进行验证:

-----------
------ ----- -------------- -

    ----------
    ------- --------- ----------

    -------------------------
    ------ ------ --------------- ---- ----- ------------- ------- -
        -- -------------------- -
            -- ------
        -
        -- ------
        ------ ------------------
    -

-

在上面的示例中,我们使用了 @Valid 注解来指示 Spring MVC 框架对 User 对象进行验证。如果验证失败,Spring MVC 框架会将错误信息存储到 BindingResult 中,我们可以通过该对象获取错误信息并进行处理。

JavaScript客户端验证

虽然 JSR 303 Bean 验证很方便,但用户体验不佳。因为当用户输入不合法的数据时,只有在提交表单后才能看到错误提示,这样会降低用户的使用体验。为了提高用户体验,我们可以使用 JavaScript 客户端验证,在用户输入数据时就及时地对数据进行验证和提示。

以下是一个简单的 JavaScript 客户端验证示例:

----- ------------- ------------------ --------------
    -----
        ------ ---------------------------
        ------ ----------- --------------- ------------- --
        ----- --------------------------
    ------
    -----
        ------ --------------------------
        ------ --------------- --------------- ------------- --
        ----- --------------------------
    ------
    ------- -------------------------
-------
--------
    --- ---- - ------------------------------------
    --- ------------- - ------------------------------------
    --- ------------- - ------------------------------------
    --- ------------- - -----------------------------------------
    --- ------------- - -----------------------------------------

    ------------------------------- --------------- -
        -- --------------------- -
            -----------------------
        -
        -- --------------------- -
            -----------------------
        -
    ---

    -------- ------------------ -
        --- ----- - ---------------------------
        -- ------ --- --- -
            ------------------------- - ----------
            ------ ------
        - ---- -
            ------------------------- - ---
            ------ -----
        -
    -

    -------- ------------------ -
        --- ----- - ---------------------------
        -- ------------- - - -- ------------ - --- -
            ------------------------- - -------- - - -- ----

- ----------------------------------------------------------- --------
---------------------------------------------------------------------------------------