如何使用reCaptcha防止数据输入在Grails中被擦除



我有 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')
    }

Snipper for 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"/>

若要重新填充字段,可以使用与消息相同的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/>

在控制器操作中,发回要重新填充的字段。

相关内容

  • 没有找到相关文章

最新更新