Я хотел бы предложить некоторый яваскрипт подхода здесь с помощью JSF сквозных атрибутов с пространствами имен Xmlns: пт = «http://xmlns.jcp.org/jsf/passthrough»
Что-то, как показано ниже:
<p:tabView
onTabChange="handleTabChange(index)"
onTabShow="handleTabShow(index)">
<c:forEach items="#{maintab.random}" var="field">
<p:tab title="Title">
<p:tabView prependId="false" cache="false" dynamic="true">
<p:tab title="ABC" style="outline: 0;" pt:data-name="#{field.name}" />
</p:tabView>
</p:tab>
</c:forEach>
</p:tabView>
Затем на JavaScript функции handleTabChange и handleTabShow, вы можете просто использовать некоторые простой код JQuery, чтобы найти нужную вкладку, и получить соответствующий данные-имя сквозной атрибут.
После того, как вы едите, вы можете вызвать некоторые < р: remoteCommand> призвания любого действия слушателя вы хотите, передавая поле в качестве параметра, так что вы можете получить его внутри слушателя действия в качестве параметра запроса.
Что-то вроде:
<p:remoteCommand name="remoteTabActionListener" actionListener="#{maintab.tabActionlistener}" />
function handleTabShow(index) {
var pass_through_field = $("expression to find the correct tab").attr("data-name");
remoteTabActionListener([{name: 'my_field', value: pass_through_field}]);
}
Итак, наконец, в вашем Java действия слушателя, вы можете получить поле:
FacesContext fc = FacesContext.getCurrentInstance();
Map<String, String> params = fc.getExternalContext().getRequestParameterMap();
String page = params.get("my_field");
Не уверен, если это будет работать, но, возможно, может дать вам некоторые идеи о том, как достичь своей цели ...
Почему бы вам не использовать ' '? –
Ваши вкладки вложены! Поэтому я сомневаюсь, что атрибут передается родительскому слушателю. Heck, он не должен даже запускать изменение дочерней вкладки – Kukeltje
@Kukeltje, так что было бы лучшим подходом к доступу к атрибутам. Я даже попытался использовать f: атрибут на родительской вкладке, который еще не смог получить к нему доступ. –