【问题标题】:Primefaces and selectorsPrimefaces 和选择器
【发布时间】:2013-01-08 11:00:48
【问题描述】:

我有一个tabView 组件,在每个tab 面板中,我都有一个form

我还有一个标志图像来更改我的应用程序中的区域设置,当单击它时,我想重新加载所有 tabView 并更改新的区域设置。

tab 面板中的一种形式中,我使用captcha 组件并且我不想重新加载它,因为...没有所有重新加载页面是不可能的(不支持部分Ajax 重新加载,我将使用Recaptcha.reload()JS 做重载工作)。

所以我想在没有验证码的情况下重新加载所有嵌套在panel 组件中的tabView 组件...panel

  • 我的tabView 嵌套在名为panel 的面板中
  • 我的验证码是captcha

我的 2 个区域设置更改按钮是这些:

<p:commandLink update="@(:panel:not(captcha))" rendered="#{locale.locale != 'fr'}">
    <h:graphicImage url="resources/images/flags/flag_fr.png" width="30" height="30" />
    <f:setPropertyActionListener target="#{locale.locale}" value="fr" />
</p:commandLink>
<p:commandLink update=":panel" rendered="#{locale.locale != 'en'}">
    <h:graphicImage url="resources/images/flags/flag_en.png" width="30" height="30" />
    <f:setPropertyActionListener target="#{locale.locale}" value="en" />
</p:commandLink>

我在update 属性中测试了很多选择器组合,但没有成功。

请提供任何选择器的想法?非常感谢

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    当您使用 PFS 时,您将引用组件的客户端 ID。例如,如果您的面板的客户端 ID 是 :panel,您的选择器将是 @(#\\:panel)(您必须转义分号)。检查生成的 html 并找出组件的真实客户端 ID。如果组件在命名容器中,则容器的 id 在子组件的 id 之前连接。例如,如果面板正在命名您的验证码容器,它将类似于:@(#\\:panel:not(#\\:panel\\:captcha))。表单也是命名容器,因此您的 id 可能会更接近于此。

    【讨论】:

    • 您好,谢谢。我的验证码 id 被翻译成 id 名称为recaptcha_widget_div 的 div 容器。现在,我只是在测试是否只重新加载这个 div,以了解在没有验证码的情况下我应该使用哪种语法来重新加载所有内容。 @(#recaptcha_widget_div)@(#\\:recaptcha_widget_div) 不起作用
    • 检查this
    • 我已经看过这篇文章,但它不符合我的需要。就我而言,我可以使用Recaptcha.reload() 刷新验证码,它工作正常。我只是想刷新我所有的tabView,除了我的验证码(将通过Recaptcha.reload()oncomplete 事件上更新)。我知道我可以手动选择所有要刷新的字段,但我认为可以使用选择器...所以我搜索 ^^ 还是谢谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2016-11-30
    • 2013-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多