根据行数据组件中的选择更新行扩展中的选项卡内容

时间:2018-01-31 08:33:11

标签: primefaces jsf-2

首先,我已经完成了关于SO的几乎所有(如果不是全部)相关问题,获得了一些重要信息和见解,但无法为我的方案找出解决方案。

其中一些重要链接:

其次,我有以下场景,类似于上面提到的一些问题,但不一样。我在扩展中实现了带有制表符的p:datatable。该行包含一个selectBox,我想要的是根据selectBox中选择的值更改扩展选项卡中的值。我在这里删除了相关的代码,

<h:form id="formId" onkeypress="if (event.keyCode == 13) { return false; }">
<h:panelGrid columns="2" styleClass="top-align">
    <p:panel>
        <p:dataTable id="dataList"
                     value="#{backingBean.list}"
                     var="item"
                     widgetVar="listTable"
                     selection="#{backingBean.selectedItem}"
                     rowKey="#{item.serialNumber}"
                     filteredValue="#{backingBean.filteredItem}"
                     >

            <p:column headerText="Fare">
                <p:selectOneMenu value="#{item.selectedFare}" converter="#{fareConverter}" var="t"
                                 effect="fade" class="blue font-16 increased-height center-align middle-align">
                    <f:selectItems value="#{item.fares}" var="fare"
                                   itemLabel="#{('&#8377; ').concat(fare.fareAmount)}"
                                   itemValue="#{fare}" />

                    <p:column>
                        <h:outputText value="#{t.fareAmount}" rendered="#{not empty t.fareAmount}"
                                      class="font-16">
                            <f:convertNumber type="currency" currencySymbol="&#8377; " maxFractionDigits="0"/>
                        </h:outputText><br/>
                        <h:outputText value="#{(' (').concat(t.fareName).concat(')')}"
                                      rendered="#{not empty t.fareName}" class="smallFont"/>
                    </p:column>
                    <p:ajax update=":tabs:fareRowTogglerTab"/>
                </p:selectOneMenu>
            </p:column>
            <p:rowExpansion>
                <p:tabView id="tabs" dynamic="true" cache="true">
                    <p:tab title="Fare Details">
                        <p:panelGrid id="fareRowTogglerTab">
                            <p:row>
                                <p:column class="right-align">
                                    <h:outputText value="Base Fare:"/>
                                </p:column>
                                <p:column class="left-align">
                                    <h:outputText value="#{item.selectedFare.fareAmount}" class="blue font-16">
                                        <f:convertNumber type="currency" currencySymbol="&#8377; " maxFractionDigits="0"/>
                                    </h:outputText>
                                </p:column>
                            </p:row>
                        </p:panelGrid>
                    </p:tab>
                </p:tabView>
            </p:rowExpansion>
        </p:dataTable>
    </p:panel>
</h:panelGrid>

我已尝试了很多其他子表达式组合

<p:ajax update="..." />

但正如我所说,到目前为止,没有什么对我有用。

我正在使用Primefaces 6.1

1 个答案:

答案 0 :(得分:1)

以这种方式试试,

update=":form:table:currentRow:tab:component"

最好的方法是签出生成的html并用JSF / Primefaces选择器替换dynamicComponent。