客户机上的Grails表单验证

客户机上的Grails表单验证,grails,gorm,Grails,Gorm,我有以下域类和gsp,似乎无法在客户端gsp端进行验证 域类: class User { String username String password String emailAddress static hasMany = [memberships: Membership] } 普惠制表格: <div class="error-details"> <g:hasErrors bean="${user}"> <ul>

我有以下域类和gsp,似乎无法在客户端gsp端进行验证

域类:

class User {
   String username
   String password
   String emailAddress
   static hasMany = [memberships: Membership]
}
普惠制表格:

<div class="error-details">
   <g:hasErrors bean="${user}">
       <ul>
           <g:eachError var="err" bean="${user}">
              <li>${err}</li>
           </g:eachError>
       </ul>
   </g:hasErrors>
</div>
<form action="${raw(createLink(controller:'purchase', action: 
'createSubscription'))}" method="POST">
   <input type="text" name="username">
   <input type="text" name="password">
   <input type="text" name="emailAddress">
</form>

有什么我遗漏的吗?

您应该使用内置标记库来渲染字段。不要使用标准HTML。通过这种方式,您可以允许Grails根据您的域类确定约束

您没有指定正在运行的grails版本:

最新版本3.3.x使用字段插件,请参见

可能存在其他限制。请看

在旧版本的grails中,请参见


在gsp中使用逻辑通常不是一个好的做法。您应该在控制器端使用验证,并将结果准确地传递给gsphow验证不起作用?您可能应该创建一个新的Grails项目,创建此用户域,并在Grails命令行中执行“generate all”以查看它是如何完成的。裁判:
<f:field bean="user" property="username"/>
<f:field bean="user" property="password" />
<f:field bean="user" property="emailAddress"/>
<f:all bean="user"/>
static constraints = {
     password password: true
}
<g:field type="text" name="username" value="${userInstance?.username}"/>
<g:field type="password" name="password" value="${userInstance?.password}"/>
<g:field type="text" name="username" value="${userInstance?.username}"/>