2013-04-17 27 views
-2

我需要調用CorreoController,這是一個bean,即時通訊工作與JSF,與AJAX ,因爲我需要做一個電子郵件,我需要使收件箱。用ajax調用Bean的函數

public Message[] refrescar(String correo, String password, int tipoMail) 
{ 
    Properties prop = new Properties(); 
    prop.setProperty("mail.pop3.starttls.enable", "false"); 
    prop.setProperty(
     "mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    prop.setProperty("mail.pop3.socketFactory.fallback", "false"); 
    prop.setProperty("mail.pop3.port", "995"); 
    prop.setProperty("mail.pop3.socketFactory.port", "995"); 
    Session sesion = Session.getInstance(prop); 

    switch(tipoMail) 
    { 
     case 1:try 
    { 
     // Se obtiene el Store y el Folder, para poder leer el 
     // correo. 
     Store store = sesion.getStore("pop3"); 
     store.connect(
      "pop.gmail.com", correo, password); 
     Folder folder = store.getFolder("INBOX"); 
     folder.open(Folder.READ_ONLY); 

     // Se obtienen los mensajes. 
     Message[] mensajes = folder.getMessages(); 


     folder.close(false); 
     store.close(); 
     return mensajes; 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
      break; 

     case 2:try 
    { 
     // Se obtiene el Store y el Folder, para poder leer el 
     // correo. 
     Store store = sesion.getStore("pop3"); 
     store.connect(
      "pop3.live.com", correo, password); 
     Folder folder = store.getFolder("INBOX"); 
     folder.open(Folder.READ_ONLY); 

     // Se obtienen los mensajes. 
     Message[] mensajes = folder.getMessages(); 

     // Se escribe from y subject de cada mensaje 
     /*for (int i = 0; i < mensajes.length; i++) 
     { 
      System.out.println(
       "From:" + mensajes[i].getFrom()[0].toString()); 
      System.out.println("Subject:" + mensajes[i].getSubject()); 

      // Se visualiza, si se sabe como, el contenido de cada mensaje 
      analizaParteDeMensaje(mensajes[i]); 
     }*/ 

     folder.close(false); 
     store.close();    
     return mensajes; 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
      break; 
     default:break; 

    } 

    return null; 


} 

誰能幫助我如何提取這些元素mensajes,以及如何在JavaScript中的dinamyc方法,使表進行收集

+0

這在網絡上的JSF教程中已有介紹。你甚至可以在[StackOverflow JSF wiki](http://stackoverflow.com/tags/jsf/info)中找到好的JSF教程。此外,您需要指定是否使用JSF 1.2或JSF 2.x. –

回答

0

的信息添加要在JSF AJAX調用,你不需要使用JavaScript。你可以嘗試如下。

。豆類:

@ManagedBean 
@ViewScope 
public class CorreoController { 
    private List<Message> mensajes; 

    public void refrescar(String correo, String password, int tipoMail) { 
     // Your logic 

     // Update the mensajes list at the end of this method 
     this.mensajes = ...; 
    } 

    // Getters and Setters 
} 

xhtml頁面:

<h:dataTable id="mensajeTable" value="#{correoController.mensajes}" > 
    ... 
</h:dataTable> 

<h:commandButton value="Get mensajes" actionListener="#{correoController.refrescar}" > 
    <f:ajax render="mensajeTable" /> 
</h:commandButton> 
+0

Ty bro try it –

+0

在這種情況下,最好將託管bean設置爲「@ RequestScoped」。 –

+0

@LuiggiMendoza:不太確定:)......'@ RequestScoped'只有當他不對列表做任何事情時纔好(例如刪除消息,標記爲已讀等)。因爲他正在處理收件箱,也許他應該甚至做懶惰加載... –