0

我正在使用 Primefaces,但是我不能使用他们的 p:captcha 组件,因为它不能被 Ajax 渲染/更新。
因此,我正在尝试使用 reCaptcha 的 Ajax Api 通过使用 Recaptcha.create 在表单上动态创建它。这是代码:

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

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

4

1 回答 1

0

我正在使用 Primefaces,但是我不能使用他们的 p:captcha 组件,因为它不能被 Ajax 渲染/更新。

错误的。该p:captcha元素具有一个id属性,因此可以使用 AJAX 对其进行更新。它还有一个属性,即使在运行时rendered也可以设置为trueor ,是的。false

Captcha 已创建,但它不验证来自 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;
    }
}
于 2012-09-11T13:13:32.313 回答