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... ファイルにも同様のエラー メッセージはありません。即座に表示されるので、クライアント側のエラー メッセージのように見えます。

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>

このエラー メッセージをカスタム メッセージに変更するにはどうすればよいですか?

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

それでもうまくいかない場合は、次の方法を試してください。

コントローラー /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 に答える
0

メッセージキーの一部として「無効」が欠落していると思います。

一致には次のエラー コードを使用します。

className.propertyName.matches.invalid = 'errorMessage'..
于 2013-08-23T01:48:18.370 に答える