2012-04-20 4 views
0

PrimeFacesのNotificationBarに奇妙な問題があります。PrimeFaces notificationBarを追加するとコードが機能しなくなります

私のコードは動作していますが、NotificationBarを追加すると奇妙に動作します!

私はDataTableのセッションBeanのデータを表示しています。 すべての罰金しかし、できるだけ早く私はこのNotificationBarを追加すると、データテーブルが空になると、何のコンテンツが取得されていない:/

ここにいくつかのコードです:

<!-- NOTIFICATION BAR headerMain.xhtml --> 
    <h:form> 
     <pou:poll autoStart="#{loginBean.logged}" global="false" interval="5" oncomplete="notificationBar.toggle()" update=":notificationBar"/> 
    </h:form> 


    <pou:notificationBar effect="slide" id="notificationBar" rendered="#{messagesBean.checkDaNotificare()}" widgetVar="notificationBar">        
     <h:outputLink value="./faces/messaggi.xhtml">           
      <h:outputText value="Hai 1 messaggio da leggere" rendered="#{messagesBean.daNotificare==1}"/> 
      <h:outputText value="Hai #{messagesBean.daNotificare} messaggi da leggere" rendered="#{messagesBean.daNotificare > 1}"/> 
     </h:outputLink> 
    </pou:notificationBar> 

_

<!-- DATATABLE IN messaggi.xhtml --> 
<pou:dataTable editable="false" id="conversationList" resizableColumns="false" rowKey="#{conversazione}" selection="#{messagesBean.destinatario}" selectionMode="single" value="#{messagesBean.listaConversazioni}" var="conversazione" widgetVar="conversationList" paginator="true" paginatorPosition="bottom" rows="20"> 
         <pou:ajax event="rowSelect" oncomplete="conversationDialog.show()" update=":conversationDialog, :menuPanel"/> 
         <pou:column> 
          <f:facet name="header"> 
           <div style="padding-left: 45%"> 
            <h:outputText value="Conversazioni"/>                                
            <h:form> 
             <pou:commandButton value="+" onclick="newMessageDialog.show()" style="margin-left: 67%"/> 
            </h:form> 
           </div> 
          </f:facet> 
          <h:outputText value="#{conversazione.username}"/> 
         </pou:column> 
        </pou:dataTable> 

_

は、
//Method used by NotificationBar to see if it has to be rendered 
public boolean checkDaNotificare() { 
    System.err.println(daNotificare); 
    daNotificare = 0; //Riazzero, quelli precedenti li avrò già notificati 
    for (Messaggio m : getMessaggiDaLeggere()) { 
     System.err.println("Controllo " + m); 
     if (!messaggiNotificati.contains(m)) { //Conto i messaggi da notificare, che sono quelli da leggere meno quelli già notificati 
      System.err.println("___Non l'avevo ancora notificato!"); 
      daNotificare++; 
      messaggiNotificati.add(m); 
     } 
    } 
    return (daNotificare > 0); 
} 

_

//Method used by the datatable to fetch data 
public List<Utente> getListaConversazioni() { 
    listaConversazioni = messageManager.getUtentiConversazioni(utente); 
    return listaConversazioni; 
} 

/** 
* PostConstruct method to initialize things 
*/ 
@PostConstruct 
public void init() { 
    listaConversazioni = messageManager.getUtentiConversazioni(utente); 
    messaggiNotificati = new LinkedList<>(); 
} 

私はイタリア語でコードを残しましたが、それは「特別」なので何もしないので、とてもシンプルです。

私は間違っていますか?私は:(事前に

感謝をsuccedingなしが、ほとんどすべてを試してみた

EDIT: 私は別のページにnotificationBarのコードを移動しようとしましたし、すべてが動作する...物事はかなり奇妙な取得している;/

+0

だけおそらく、それは./faces/messaggiへの相対パスと関係があるでしょう.xhtml "?他のページではOKですが、最初のページでは表示されません。 – Daniel

+0

いいえ、それはちょうどリンクです...問題が何であるかはまだ分かりませんが、空のNotificationBarでもこの問題を解決しました – StepTNT

+0

こんにちはこの問題を解決しましたか?私は同様の振る舞いを持っています.... thnx – Mariah

答えて

0

StepTNT ...私はあなたがDataTableのfilteredValueを指定する必要が信じている。通常は、filteredValueで新しいのArrayList()インスタンスを設定したが、最近、私はこの問題に直面し、それがどのインスタンスなしfilteredValueと私のために働いた。

+0

こんにちはダークネス、スタックオーバーフローで、最良の答えは、コードだけでなく、そのコードがどのように問題を解決するかの説明が含まれています。それ以上のものとポストは雑音かもしれません。この記事を改善するために[編集]を検討してください。がんばろう! :) – jmort253

関連する問題