在Grails中哪里更改客户端的i18n默认消息?

时间:2013-08-23 00:20:01

标签: grails twitter-bootstrap internationalization

我的域对象 usuario / Usuario.groovy 中有下一个约束:

phone blank: false, matches: "[0-9 -+()]{3,15}"

我在 i18n / messages_es.properties

usuario.telefono.matches=Se admiten números, espacios y los caracteres: -+(). Se admiten entre 3 y 15 caracteres en total.

如果手机与模式不匹配,则会出现以下错误消息:

client side error message

邮件的翻译类似于:“请调整请求的格式”

我在任何i18n / messages ...文件中都没有任何类似的错误消息。它看起来是客户端错误消息,因为它立即出现。

在create gsp中有下一个代码(我认为错误信息可能来自这里):

<g:hasErrors bean="${usuarioInstance}">
<bootstrap:alert class="alert-error">
<ul>
    <g:eachError bean="${usuarioInstance}" var="error">
    <li <g:if test="${error in org.springframework.validation.FieldError}">data-field-id="${error.field}"</g:if>><g:message error="${error}"/></li>
    </g:eachError>
</ul>
</bootstrap:alert>
</g:hasErrors>

如何通过自定义更改此错误消息?

3 个答案:

答案 0 :(得分:3)

首先要了解的是:此消息是html表单验证错误,并未与您的应用程序消息相关联。所以修复将在html中。尝试将 oninvalid attribut添加到输入标记:

<input type="text" name="phone" pattern="[0-9 -+()]{3,15}" required="" value="" id="phone" oninvalid="setCustomValidity('Please, type valid phone number')">

您可以移动'请输入有效的电话号码'到i18n档案

修改:如果您使用字段插件,请使用输入前缀添加 oninvalid attr。

<f:field bean="${usuarioInstance}" property="phone" input-oninvalid="setCustomValidity('Please, type valid phone number')"/>

答案 1 :(得分:0)

我认为你错过了'无效'作为消息密钥的一部分。

对匹配项使用以下错误代码:

className.propertyName.matches.invalid = 'errorMessage'..

答案 2 :(得分:0)

如果它不起作用,请使用以下方法。

在控制器/服务中添加def messageSource。

user.errors?.allErrors?。每个{ println messageSource.getMessage(it,null) };

通过以下链接更好地解释

http://johnrellis.blogspot.com/2010/02/retrieve-grails-domain-errors-from.html