在选项卡更改时更新 h:inputHidden

Updating h:inputHidden on tab change

我有一个包含两个选项卡的 Primefaces 选项卡视图和一个包含一些字符串的 inputHidden 元素。在第一个选项卡上有一个 commandButton 可以更改 inputHidden 元素的值。我想在 useText JS 函数中使用更改后的值,但我得到了隐藏字段的旧值。

更新我的隐藏字段后,它已更新,但第二个选项卡上的输出文本未更新,我不明白为什么。

<h:form id="formMain">
      ...
    <p:tabView onTabChange="useText(#{bean.text});">
        <p:tab title="tab1">
            <p:commandButton value="Change" action="#{bean.doBtnChangeText}" update=":formMain:hidArray @(.textTest)" />
        </p:tab>
        <p:tab title="tab2" >
<h:outputText styleClass="textTest" value="#{bean.text}" />
        </p:tab>
    </p:tabView>
      ...
<h:inputHidden id="hidText" value="#{bean.text}" immediate="true" />

</h:form>

编辑:我在第二个选项卡上添加了一些输出文本以检查更新值。我在命令按钮上更新了隐藏字段和输出文本。隐藏字段已更新但输出文本未更新。

正如 Jasper 所说,您可以在您的命令按钮上尝试 update,或者尝试直接从 bean 更新,在您的 doBtnChangeText() 上,只需调用 RequestContext.getCurrentInstance().update("form:hidText").

通过向 h:outputText 元素添加 id 属性解决了这个问题。

<h:outputText id="outText" styleClass="textTest" value="#{bean.text}" />