Primefaces Captcha消失或无效更新/刷新无效输入?

Mur*_*zen 5 java jsf captcha java-ee primefaces

我在里面有一段代码 h:form

<h:panelGrid id="captchaGrid">
    <p:captcha id="captcha" label="Captcha" required="true"
        requiredMessage="required"
        validatorMessage="...">
    </p:captcha>
    <p:message id="captchaMessage" for="captcha" />
</h:panelGrid>

<p:commandButton id="submitButton" value="save"
    actionListener="#{userBean.save}" update="captchaGrid"
    onstart="doSomething()"
    oncomplete="doSomethingElse(xhr, status, args)" icon="ui-icon-check">
</p:commandButton>
Run Code Online (Sandbox Code Playgroud)

如果我正确输入验证码,这可以正常工作.但是,如果我输入的值无效,则验证码组件就会消失.

我尝试删除该update="captchaGrid"属性.这一次,验证码并没有消失.相反,它没有在视觉上刷新,但(我猜)在内部.因为正确键入两个单词仍会生成验证错误.

此外; 我不想用ajax="false".

更新:我也试过了oncomplete="Recaptcha.reload()".没工作.有一个错误.但我不知道这是我的代码还是Primefaces 3.0 :)

更新2:正如maple_shaft所指出的,事实证明这是Primefaces/Recaptcha的一个问题.所以我正在寻找你可能建议的任何肮脏的黑客.

任何帮助赞赏.

map*_*aft 7

你不会喜欢我的答案,但这不是一个错误.

Primefaces问题1642标记为无法修复.

Primefaces Captcha使用Recaptcha,它不支持也不支持Ajax刷新.您必须执行整页回发才能使此组件正常工作.请记住,这也会影响在需要对面板进行Ajax刷新的组件中使用Captcha的能力,例如选项卡视图或向导组件.

编辑:另一方面,有可能在一个内部使用验证码组件<iframe>来实现类似的效果,但这似乎是一个肮脏的黑客.对不起,我无法提供更多帮助.