首先,我已经完成了关于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="#{('₹ ').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="₹ " 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="₹ " 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
答案 0 :(得分:1)
以这种方式试试,
update=":form:table:currentRow:tab:component"
最好的方法是签出生成的html并用JSF / Primefaces选择器替换dynamicComponent。