Dan*_* T. 16 validation grails grails-2.0
用于验证的Grails 2.0.4文档向您展示了如何在页面顶部显示错误消息以及如何在字段无效时如何向元素添加css类,但它不会告诉您如何显示错误消息在字段本身旁边,这样的事情:
-----------------------
Name: | | You must enter a name!
-----------------------
Run Code Online (Sandbox Code Playgroud)
如何检索无效字段的特定错误消息,然后将其显示在字段旁边?
Gre*_*egg 12
实际上,文档确实显示了如何执行此操作,它只是不明确这是他们的意思:
<g:renderErrors bean="${book}" as="list" field="title"/>
Run Code Online (Sandbox Code Playgroud)
如果指定字段属性,则只会为该字段呈现错误.那么你应该相应地编写HTML.
<input type="text" ... /> <g:if test="${bean.hasErrors}"><g:renderErrors bean="${book}" as="list" field="title"/></g:if>
Run Code Online (Sandbox Code Playgroud)
它可以像你想的那样简单或复杂,虽然我一般都喜欢grails插件,但这似乎很简单,没有一个,你可以更好地控制标记.
我使用Grails Fields插件来执行此操作,它可以实现一种享受.
它可以轻松地为表单域渲染创建默认模板.例如,我有以下内容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>
Run Code Online (Sandbox Code Playgroud)
正如您在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>
Run Code Online (Sandbox Code Playgroud)