【问题标题】:PrimeFaces wizard with captcha带有验证码的 PrimeFaces 向导
【发布时间】:2013-05-07 12:35:45
【问题描述】:

我正在尝试将<p:captcha> 实现为<p:wizard> PrimeFaces。我发现只有this 有类似问题的帖子,当向导中的验证码会在无效输入时消失。建议的解决方案对我不起作用。

主要问题:是否可以通过某种适当的方式将验证码插入 PrimeFaces 向导?

感谢您的回复!

【问题讨论】:

    标签: jsf-2 primefaces captcha wizard


    【解决方案1】:

    我没有想出合适的解决方案(向导选项卡的 AJAX 更新会阻止重新加载 Recaptcha 控件的 iframe),但我创建了一个简单的解决方法:

    1. <p:captcha><p:wizard> 之外的位置
    2. 绝对定位验证码 iframe,使其在向导内移动
    3. 用 CSS 和
    4. 隐藏它
    5. 在相应的向导选项卡上取消隐藏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。感谢您的帮助!
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签