【发布时间】:2013-05-07 12:35:45
【问题描述】:
我正在尝试将<p:captcha> 实现为<p:wizard> PrimeFaces。我发现只有this 有类似问题的帖子,当向导中的验证码会在无效输入时消失。建议的解决方案对我不起作用。
主要问题:是否可以通过某种适当的方式将验证码插入 PrimeFaces 向导?
感谢您的回复!
【问题讨论】:
标签: jsf-2 primefaces captcha wizard
我正在尝试将<p:captcha> 实现为<p:wizard> PrimeFaces。我发现只有this 有类似问题的帖子,当向导中的验证码会在无效输入时消失。建议的解决方案对我不起作用。
主要问题:是否可以通过某种适当的方式将验证码插入 PrimeFaces 向导?
感谢您的回复!
【问题讨论】:
标签: jsf-2 primefaces captcha wizard
我没有想出合适的解决方案(向导选项卡的 AJAX 更新会阻止重新加载 Recaptcha 控件的 iframe),但我创建了一个简单的解决方法:
<p:captcha> 在<p:wizard> 之外的位置
flowListener 方法中的验证码:例如
public String onFlowProcess(FlowEvent event) {
RequestContext context = RequestContext.getCurrentInstance();
if ("confirm".equals(event.getNewStep())) {
context.execute("jQuery(document.getElementById('register:captchaDiv')).show()");
} else {
context.execute("jQuery(document.getElementById('register:captchaDiv')).hide()");
}
return event.getNewStep();
}
【讨论】:
onFlowProcessregister方法中的id是<p:wizard>吗?你在 register 只是包含 p:wizard 控件和另一个 ID 为 register:captchaDiv 且包含 p:captcha 控件的 DIV 元素的 ID。重要的是保持 p:captcha 在 DOM 树中的 p:wizard 之外,同时通过 CSS 进行绝对定位以在 GUI 的向导中包含验证码。
visibility: hidden 隐藏验证码,但它正在使用 display: none。感谢您的帮助!