2017-02-06 3 views
0

Я хочу, чтобы получить доступ к некоторым параметрам в моем бэк-бобе на вкладку click.I используется, но я не в состоянии извлечь параметры из it.Here в моем коде:<f:attribute> не работает внутри <p:tab>

<p:tabView> 
<p:ajax event="tabChange" listener="#{maintab.tabchangelistener}" /> 
<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;"> 
       <f:attribute name="parameter" value="#{field.name}"/> 
      </p:tab> 
     </p:tabView> 
    </p:tab> 
</c:forEach> 
</p:tabView> 

Моего tabchangelistener функции является:

public void tabchangelistener(TabChangeEvent event){ 
    String par=(String)event.getTab().getAttributes().get("parameter"); 
} 
+0

Почему бы вам не использовать ''? –

+0

Ваши вкладки вложены! Поэтому я сомневаюсь, что атрибут передается родительскому слушателю. Heck, он не должен даже запускать изменение дочерней вкладки – Kukeltje

+0

@Kukeltje, так что было бы лучшим подходом к доступу к атрибутам. Я даже попытался использовать f: атрибут на родительской вкладке, который еще не смог получить к нему доступ. –

ответ

0

Я хотел бы предложить некоторый яваскрипт подхода здесь с помощью 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"); 

Не уверен, если это будет работать, но, возможно, может дать вам некоторые идеи о том, как достичь своей цели ...

Смежные вопросы