1

我的域对象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.

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

客户端错误信息

消息的翻译类似于:“请调整请求的格式”

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

在创建 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>

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

4

3 回答 3

3

您必须了解的第一件事:此消息是 html 表单验证错误,并且与您的应用程序消息无关。所以修复将在html中。尝试将oninvalid属性添加到输入标签:

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

您可以将“请输入有效的电话号码”移动到 i18n 文件

编辑:如果您使用字段插件,请添加带有input-前缀的oninvalid attr 。

<f:field bean="${usuarioInstance}" property="phone" input-oninvalid="setCustomValidity('Please, type valid phone number')"/>
于 2013-08-23T07:57:00.717 回答
0

我认为您缺少“无效”作为消息密钥的一部分。

使用以下错误代码进行匹配:

className.propertyName.matches.invalid = 'errorMessage'..
于 2013-08-23T01:48:18.370 回答
0

仍然如果它不起作用..尝试以下方法。

在控制器 /service 中添加 def messageSource。

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

通过以下链接可以更好地解释这一点

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

于 2013-08-23T02:30:08.730 回答