Ajax动作忽略了Recaptcha

时间:2012-09-11 11:32:22

标签: ajax jsf-2 primefaces recaptcha

我正在使用Primefaces,但我不能使用他们的p:captcha组件,因为它无法通过Ajax呈现/更新。
因此,我正在尝试使用reCaptcha的Ajax Api通过使用Recaptcha.create动态地在窗体上创建它。这是代码:

Recaptcha.create(/*public_code*/,
                        'captchadiv', {
                            tabindex : 1,
                            theme : "red",
                            callback : Recaptcha.focus_response_field
                        });

已经创建了验证码,但它不会验证来自ajax按钮的操作,例如p:commandButton。我做错了什么?

1 个答案:

答案 0 :(得分:0)

  

我正在使用Primefaces,但我无法使用他们的p:captcha组件,因为它无法通过Ajax呈现/更新。

假。 p:captcha元素具有id属性,因此可以使用AJAX更新 。它还有一个rendered属性,可以设置为truefalse,即使在运行时也是如此。

  

已经创建了验证码,但它不会验证来自ajax按钮的操作,例如p:commandButton。我做错了什么?

我猜你正在渲染的验证码元素没有与JSF / PrimeFaces集成。 ; - )

为什么不使用这样的PrimeFaces验证码元素:

<div id="captchaWrapper">
    <p:captcha rendered="captchaBean.rendered"/>
</div>
<p:commandButton value="render" action="#{captchaBean.render}" 
    update="captchaWrapper"/>

并有这样的支持bean:

public class CaptchaBean
{
    //Getter/setter omitted
    private boolean rendered;

    public void render()
    {
        rendered = true;
    }
}