0

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

我还有一个标志图像来更改我的应用程序中的语言环境,当它被点击时,我想重新加载所有tabView新的语言环境更改。

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

所以我想重新加载tabView嵌套在panel名为...的组件中的所有组件,panel而不需要我的验证码。

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

我的 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但没有成功。

请问有什么选择器的想法吗?非常感谢

4

1 回答 1

0

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

于 2013-01-08T11:27:09.893 回答