在Grails中,如何在字段旁边显示验证错误消息?

时间:2012-06-08 05:52:15

标签: validation grails grails-2.0

验证Grails 2.0.4 documentation向您展示如何在页面顶部显示错误消息,以及如果字段无效,如何将css类添加到元素,但它不会告诉您如何显示字段本身旁边的错误消息,如下所示:

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

如何检索无效字段的特定错误消息,然后将其显示在字段旁边?

4 个答案:

答案 0 :(得分: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插件,但这似乎很简单,没有一个,你可以更好地控制标记。

答案 1 :(得分:7)

我使用Grails Fields plugin来执行此操作,并且可以使用它。

可以轻松为表单域渲染创建默认模板。例如,我在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>

答案 2 :(得分: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>

答案 3 :(得分:1)

我建议使用Jquery validation plugin。关于这个有几个Grails插件,但它们有点过时了。此外,我认为这个任务对于使用另一个插件非常简单。