2012-06-08 48 views
16

Grails 2.0.4 documentation进行验证展示了如何在页面的顶部以及如何将CSS类为一个元素添加一个字段是无效的显示错误消息,但它不会告诉你如何显示错误消息旁边字段本身,这样的事情:在Grails中,如何在字段旁边显示验证错误消息?

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

你如何获取特定的错误消息无效的域,然后在它旁边是用于显示设备领域呢?

+0

这一切都在您的视图的HTML。查看脚手架模板以查看默认渲染。您可以修改它们以在任何地方显示字段错误。答案中提到的字段插件已经这样做了。 – aldrin

+0

我创建了关于如何创建一个自定义的验证和发布自定义错误消息回到你的观点在这里详细的解答:http://stackoverflow.com/questions/14038905/how-do-i-create-a-custom -validator -with-a-custom-error-message-in-grails/14038908#14038908 – Spider

回答

11

事实上,文件并展示了如何做到这一点,它只是不是太清楚,这是他们的意思:

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

如果指定属性,它只会渲染错误(s)为该领域。那么就由你来编写相应的HTML。

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

它可以变得简单或复杂,因为你会喜欢它,而我一般喜欢Grails插件,这只是似乎很简单没有一个做的,你必须在标记更多的控制。

+0

谢谢格雷格。这是我正在寻找的。 –

+0

如果该字段未链接到bean,该怎么办?假设你创建一个只有一个字段来搜索某个实体的gsp ...我该如何显示错误? – FrancescoDS

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

非常棒!肯定会尝试字段插件。 – Kimi

1

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

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> 
相关问题