客户端上的 Grails 表单验证
Grails form validation on client
我有以下域 class 和 gsp,但似乎无法在客户端 gsp 端进行验证。
域名class:
class User {
String username
String password
String emailAddress
static hasMany = [memberships: Membership]
}
表格 gsp:
<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>
有什么我遗漏的吗?
您应该使用内置的 Taglibs 来呈现字段。不要使用标准 HTML。这样您就可以让 Grails 根据您的域 class 确定约束。
您没有指定您使用的 grails 版本 运行:
最新版本3.3.x使用了fields插件,请看https://grails-fields-plugin.github.io/grails-fields/latest/ref/Tags/field.html
<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
}
可能存在其他限制。请参阅 https://docs.grails.org/latest/ref/Constraints/Usage.html
在旧版本的 grails 中,请参阅 https://grails.github.io/grails2-doc/2.4.3/ref/Tags/field.html
<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}"/>
我有以下域 class 和 gsp,但似乎无法在客户端 gsp 端进行验证。
域名class:
class User {
String username
String password
String emailAddress
static hasMany = [memberships: Membership]
}
表格 gsp:
<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>
有什么我遗漏的吗?
您应该使用内置的 Taglibs 来呈现字段。不要使用标准 HTML。这样您就可以让 Grails 根据您的域 class 确定约束。
您没有指定您使用的 grails 版本 运行:
最新版本3.3.x使用了fields插件,请看https://grails-fields-plugin.github.io/grails-fields/latest/ref/Tags/field.html
<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
}
可能存在其他限制。请参阅 https://docs.grails.org/latest/ref/Constraints/Usage.html
在旧版本的 grails 中,请参阅 https://grails.github.io/grails2-doc/2.4.3/ref/Tags/field.html
<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}"/>