我有突片的动态数,显示搜索结果(在一类SearchInstance)一个TabView的。 内标签也有这显示以不同的方式在搜索结果的TabView的。 该内TabView的一个选项卡显示在数据表(如列表)的搜索结果。 该行是可选的。 我传播在表中选择的搜索结果在当前SearchInstance对象。 不幸的是,选择的搜索结果只有正确设置的最后一个选项卡上。 如果我最后一个标签之前选择一个选项卡上的搜索结果,Ajax请求不打SearchInstance的正确实例和传播即使选择一些行空List。
有些缩短代码:
外TabView的:
<p:tabView id="searchTabViewId" activeIndex="#{searchBL.activeTabIndex}">
<p:ajax event="tabClose" listener="#{searchBL.onCloseTab}" />
<c:forEach items="#{searchBL.searchInstances}" var="curSearch">
<p:tab closable="#{curSearch.isCloseable()}">
<ui:include
src="#{curSearch.closeable ? '/sections/search/searchInstanceTab.xhtml' : '/sections/search/firstSearchTab.xhtml'}">
<ui:param name="curSearch" value="#{curSearch}" />
</ui:include>
</p:tab>
</c:forEach>
在索引为0的标签具有特殊含义的搜索模板,而不是关闭。 所以,第一个选项卡始终是相同的,但也有一SearchInstance作为model.On第一标签是没有显示的数据表。 因此,与指数> 0标签出现问题。
searchInstanceTab.xhtml:
<h:form rendered="#{curSearch.isCloseable()}">
<h:panelGrid id="searchMaskInstanceOuterGridId" columns="1">
<p:tabView id="listResultTabViewId">
<p:tab id="listResultTabId">
<ui:include src="/sections/search/resultList.xhtml">
<ui:param name="curSearch" value="#{curSearch}" />
</ui:include>
</p:tab>
...
</p:tabView>
</h:panelGrid>
数据表里面resultList.xhtml
<p:dataTable id="searchResultTableId" scrollable="true" value="#{curSearch.getSearchResults()}" scrollHeight="300"
var="curSearchResult" sortMode="multiple" rowKey="#{curSearchResult.hashCode()}" draggableColumns="true"
resizableColumns="true" selection="#{curSearch.selectedSearchResults}" >
<p:ajax event="rowSelect" />
<p:ajax event="rowUnselect" />
<p:ajax event="toggleSelect" />
<p:ajax event="rowSelectCheckbox" />
<p:ajax event="rowUnselectCheckbox" />
<p:column style="width: 16px;">
<p:rowToggler />
</p:column>
<p:column selectionMode="multiple" style="width: 16px; text-align:center" />
<p:columns value="#{curSearch.determinePrimaryPropertyNames()}" var="curPrimaryPropName"
sortBy="#{curSearchResult[curPrimaryPropName].getValue()}"
filterBy="#{curSearchResult[curPrimaryPropName].getValue()}" filterMatchMode="contains">
<f:facet name="header">
<h:outputText value="...." />
</f:facet>
...
</p:dataTable>
我真是被困在这里。 也许这是有问题的使用C:的forEach呈现标签? 随着用户界面:重复或内置在TabView的迭代这是行不通的。 或者是它不允许设置直接SearchInstance迭代变量中选定行?
我使用JSF 2.2.10和5.1.13 Primefaces。 与JUEL埃尔2.2.7。
至于奥利弗