验证Grails 2.0.4 documentation向您展示如何在页面顶部显示错误消息,以及如果字段无效,如何将css类添加到元素,但它不会告诉您如何显示字段本身旁边的错误消息,如下所示:
-----------------------
Name: | | You must enter a name!
-----------------------
如何检索无效字段的特定错误消息,然后将其显示在字段旁边?
答案 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插件,但它们有点过时了。此外,我认为这个任务对于使用另一个插件非常简单。