如何使用 reCaptcha 防止数据输入在 Grails 中被擦除
How to prevent data input for being erase in Grails with reCaptcha
我的 gsp 有两个文本字段,用于名字-姓氏和 reCaptcha。我想要的是对于每个错误的验证码,用户输入的名字和姓氏都不会被删除。
控制器代码段:
***captcha_code****
if (result) {
def person = new Person(params)
person.save()
render "Success!"
} else {
flash.message = message(code: 'forgotPassword.captcha.wrong')
redirect(controller:'person', action:'form')
}
form.gsp
的狙击手
***captcha_code_here***
<g:form controller="person" action="save">
<label>First Name: </label>
<g:textField name="firstName"/><br/>
<label>Last Name: </label>
<g:textField name="lastName"/><br/>
<g:if test="${flash.message}">
<div class="message" role="status" style="font-size: medium;color: green;">${flash.message}</div>
</g:if>
***captcha_code_here***
<g:actionSubmit value="Save"/>
在 Controller Action 中,发回您想要重新填充的字段。
要重新填充字段,您可以使用与消息相同的 flash
范围。出错时,将名字和姓氏添加到 flash
范围,然后在您的 GSP 中使用可用的这些值:
个人控制器
class PersonController {
def save() {
...
if(/* recaptcha failed */) {
flash.firstName = params.firstName
flash.lastName = params.lastName
}
...
}
}
普惠制
<label>First Name: </label>
<g:textField name="firstName" value="${flash.firstName ?: ''}"/><br/>
<label>Last Name: </label>
<g:textField name="lastName" value="${flash.lastName ?: ''}"/><br/>
我的 gsp 有两个文本字段,用于名字-姓氏和 reCaptcha。我想要的是对于每个错误的验证码,用户输入的名字和姓氏都不会被删除。
控制器代码段:
***captcha_code****
if (result) {
def person = new Person(params)
person.save()
render "Success!"
} else {
flash.message = message(code: 'forgotPassword.captcha.wrong')
redirect(controller:'person', action:'form')
}
form.gsp
的狙击手***captcha_code_here***
<g:form controller="person" action="save">
<label>First Name: </label>
<g:textField name="firstName"/><br/>
<label>Last Name: </label>
<g:textField name="lastName"/><br/>
<g:if test="${flash.message}">
<div class="message" role="status" style="font-size: medium;color: green;">${flash.message}</div>
</g:if>
***captcha_code_here***
<g:actionSubmit value="Save"/>
在 Controller Action 中,发回您想要重新填充的字段。
要重新填充字段,您可以使用与消息相同的 flash
范围。出错时,将名字和姓氏添加到 flash
范围,然后在您的 GSP 中使用可用的这些值:
个人控制器
class PersonController {
def save() {
...
if(/* recaptcha failed */) {
flash.firstName = params.firstName
flash.lastName = params.lastName
}
...
}
}
普惠制
<label>First Name: </label>
<g:textField name="firstName" value="${flash.firstName ?: ''}"/><br/>
<label>Last Name: </label>
<g:textField name="lastName" value="${flash.lastName ?: ''}"/><br/>