16

検証用のGrails2.0.4のドキュメントには、ページの上部にエラーメッセージを表示する方法と、フィールドが無効な場合に要素にcssクラスを追加する方法が示されていますが、エラーメッセージを表示する方法は示されていません。フィールド自体の横に、次のようなものがあります。

      -----------------------
Name: |                     |  You must enter a name!
      -----------------------

無効なフィールドの特定のエラーメッセージを取得して、そのフィールドの横に表示するにはどうすればよいですか?

4

4 に答える 4

12

実際、ドキュメントにはこれを行う方法が示されていますが、これが意味することはあまり明確ではありません。

<g:renderErrors bean="${book}" as="list" field="title"/>

field属性を指定すると、そのフィールドのエラーのみがレンダリングされます。したがって、それに応じてHTMLを作成するのはあなた次第です。

<input type="text" ... /> <g:if test="${bean.hasErrors}"><g:renderErrors bean="${book}" as="list" field="title"/></g:if>

必要に応じて単純または複雑にすることができます。私は一般的にgrailsプラグインが好きですが、これはプラグインなしで実行できるほど単純に見え、マークアップをより細かく制御できます。

于 2012-06-08T17:26:51.257 に答える
7

これを行うためにGrailsFieldsプラグインを使用しますが、これは扱います。

フォームフィールドレンダリング用のデフォルトテンプレートを簡単に作成できます。たとえば、私は次のようにしていますgrails-app/views/_fields/default/_field.gsp

<%@ page defaultCodec="html" %>
<div class="control-group${invalid ? ' error' : ''}">
    <label class="control-label" for="${property}${index ?: ""}">${label}</label>
    <div class="controls">
        <%= widget.replace("id=\"${property}\"", "id=\"${property}${index ?: ""}\"") %>
        <g:if test="${invalid}"><span class="help-inline">${errors.join('<br>')}</span></g:if>
    </div>
</div>

HTMLからわかるように、エラーはインラインで表示されます。これが私のログインフォームの一部です:

<g:form controller="home" action="login" >
    <f:field bean="user" property="email"/>
    <f:field bean="user" property="password">
        <g:field type="password" name="${property}" value="${value}"/>
    </f:field>
</g:form>
于 2012-06-08T06:25:39.263 に答える
4

これは、ユーザー名フィールドにラップされたコンテキストのカスタムエラーです。これはあなたが望むことをします。

<dt>User Id</dt>
            <dd><g:textField name="username" value="${user?.username}"/>
            <g:hasErrors bean="${user}" field="username">
                    <g:eachError bean="${user}" field="username">
                        <p style="color: red;"><g:message error="${it}"/></p>
                    </g:eachError>
                </g:hasErrors>
            </dd>
于 2012-06-08T17:43:51.767 に答える
1

Jquery検証プラグインを使用することをお勧めします。これについてはいくつかのGrailsプラグインがありますが、それらは少し時代遅れです。その上、このタスクは別のプラグインを使用するために非常に簡単だと思います。

于 2012-06-08T07:10:15.003 に答える