我的域对象 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 ...文件中都没有任何类似的错误消息。它看起来是客户端错误消息,因为它立即出现。
在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>
如何通过自定义更改此错误消息?
答案 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