Spring和jQuery验证:如何使用本地化字符串?

时间:2016-06-17 11:54:38

标签: javascript jquery spring jquery-validate

以此表格为例:

<form id="login_form" method="post" action="/rest/auth/auth">

    <div id="login_email" class="row margin-top-50">
        <div class="col-md-12" id="input_container">
            <input id="login_email_input" class="input_edit input_edit_img_width" type="email" name="email" th:placeholder="#{label.common_email}"></input>
            <img class="input_edit_img" src="/img/ic_login_user.png"></img>
        </div>
    </div>

    <div id="login_password" class="row margin-top-15">
        <div class="col-md-12" id="input_container">
            <input id="login_password_input" class="input_edit input_edit_img_width" type="password" name="password" th:placeholder="#{label.common_password}"></input>
            <img class="input_edit_img" src="/img/ic_login_pw.png"></img>
        </div>
    </div>

    <div class="row margin-top-15">
        <div class="col-md-12">
            <div class="checkbox_square">
                <input id="check_password_show" type="checkbox" value=""></input>
                <label for="check_password_show"></label>
                <span th:text="#{label.common_password_show}"></span>
            </div>
        </div>
    </div>

    <div class="row margin-top-15">
        <div class="col-md-12">
            <button id="login_submit" type="submit" class="btn btn-default btn-blue" th:text="#{label.login}"></button>
        </div>
    </div>

</form>

正如您所见,我可以使用th:placeholder="#{label.common_email}"这样的本地化消息。

我现在想使用jQuery Validation,我真的需要以某种方式使用我messages.properties中的本地化字符串,如下所示:

$("#login_form").validate({
    rules: {
        email: {
            required: true,
            email: true
        },
        password: {
            required: true
            /*minlength: 6,
            maxlength: 20*/
        }
    },
    messages: {
        email: {
            required: "#{label.input_missing_email}",
            email: "#{label.input_missing_email_valid}"
        },
        password: {
            required: "#{label.input_missing_password}",
            minlength: "#{label.input_missing_password_valid}"
        }
    }
});

有什么方法可以从客户端javascript访问我的春季本地化消息?或者,如果我必须使用本地化字符串,我应该更好地使用不同的验证方法吗?

2 个答案:

答案 0 :(得分:1)

您无需在javascript级别从messages.properties检索语言环境字符串, 如果仅将区域设置字符串保留为HTML,则可以轻松完成此操作, 我将在这做什么:

HTML:

  • 在每次输入后单独<span><div>(如果您愿意的话) 在该元素之后显示一些msg,一些验证类型)
  • 将所有语言区域字符串保存在<span><div>
  • 的html中

JS:

  • 当jQuery验证触发相应的表单输入时,只显示/隐藏相应的<span><div>

答案 1 :(得分:1)

jQuery.i18n.properties 是一个轻量级的jQuery插件,用于从'.properties'文件提供javascript的国际化,就像在Java Resource Bundles中一样。它根据提供的语言和国家/地区代码加载和解析资源包(.properties)。More

假设

label.delete.success =Successfully Deleted
label.delete.failure=Error in success

是您的messages.properties属性文件。

然后jQuery.i18n.prop(label.delete.success)会从您的javascript文件中返回Successfully Deleted

希望这有帮助。