jsf - 如何仅更新 p :tabView? 的事件选项卡

标签 jsf jsf-2 tabs primefaces refresh

我需要在执行操作后刷新 p:tabView(以显示错误消息等)。

要验证的字段位于各个选项卡上。当我更新整个 tabView 时,这当然是有问题的行为,因为在 PrimeFaces 中,不可见的选项卡不应更新(因为编辑字段是不可见的,并且当刷新它们时,它们会丢失它们的值,例如 p:autoComplete 是无效)。

所以,我应该只更新事件选项卡,但是如何使用 commandButton 的更新属性仅定位事件选项卡,而不是整个 p:tabView?

最佳答案

<罢工> 我做了一个简短的例子:

<h:form id="form">
    <p:tabView id="tabview">
        <p:tab title="tab 1">
            <p:commandButton value="update" update="@parent" />
        </p:tab>
        <p:tab title="tab 2">
            <p:outputPanel id="tab2">
                <p:commandButton value="update" update=":form:tabview:tab2" />
            </p:outputPanel>
        </p:tab>
    </p:tabView>
</h:form>

但是,当我更新p:tab时通过 ID 或使用 @parent (就像我在选项卡 1 中所做的那样)选项卡 (div) 被删除,奇怪...解决方法是将选项卡的内容包装在容器中,就像我在选项卡 2 中所做的那样。

<小时/>

哈!找到无法直接更新选项卡的原因:https://code.google.com/p/primefaces/issues/detail?id=3518

<罢工>

标签 View 之外的按钮示例:

<h:form id="form">
    <p:tabView id="tabview" binding="#{tabView}">
        <p:ajax event="tabChange" update=":form:button" />
        <p:tab title="tab 1">
            <p:outputPanel id="tab0">
                <p:panel>text</p:panel>
            </p:outputPanel>
        </p:tab>
        <p:tab title="tab 2">
            <p:outputPanel id="tab1">
                <p:panel>text</p:panel>
            </p:outputPanel>
        </p:tab>
    </p:tabView>
    <p:commandButton id="button" value="update"
        update=":form:tabview:tab#{tabView.activeIndex}" />
</h:form>

关于jsf - 如何仅更新 p :tabView? 的事件选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14236165/

相关文章:

java - 配置到jsf中的错误页面时出错?

ajax - JSF - 使用 AJAX 和 selectOneListbox 创建动态菜单

c# - 选项卡更改时刷新/重新加载 MUI WPF 页面

java - 使用Selenium按tab然后用java编写

java - 带有 Cocoon 的 JSF

jsf - 在 JSF 中的长时间处理期间防止 session 超时

Primefaces 选择列表 dualList 对象变为空

angularjs - 使用 Angular ui Bootstrap 时,一个静态选项卡内用于显示第二个选项卡的按钮不起作用

jsf - 从 session 中删除特定的 CDI 托管 bean

html - primefaces:如何在 <p:layoutUnit> 中禁用 css