繁体   English   中英

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

[英]In Grails, how do I display validation error messages next to the fields?

用于验证的Grails 2.0.4文档向您展示了如何在页面顶部显示错误消息以及如何在字段无效时如何向元素添加css类,但它不会告诉您如何显示错误消息在字段本身旁边,这样的事情:

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

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

实际上,文档确实显示了如何执行此操作,它只是不明确这是他们的意思:

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

如果指定字段属性,则只会为该字段呈现错误。 那么你应该相应地编写HTML。

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

它可以像你想的那样简单或复杂,虽然我一般都喜欢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>

正如您在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>

这是上下文中的自定义错误,包含在用户名字段中。 这将做你想要的。

<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>

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM