2013-04-17 2 views
-2

Ну, ребята, мне нужно вызвать CorreoController, который является bean-файлом, работающим с JSF, с ajax , потому что мне нужно сделать электронное письмо, и мне нужно сделать почтовый ящик.Вызов функции Bean с ajax

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 в сети. Вы даже можете найти хорошие учебники JSF в [StackOverflow JSF wiki] (http://stackoverflow.com/tags/jsf/info). Кроме того, вам нужно указать, работаете ли вы с JSF 1.2 или JSF 2.x. –

ответ

0

Чтобы сделать вызов AJAX в JSF, вы не нужно использовать 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 ill try it –

+0

В этом случае было бы лучше иметь управляемый bean-компонент как '@ RequestScoped'. –

+0

@LuiggiMendoza: не так уверен в этом:) ... '@ RequestScoped' хорош только в том случае, если он ничего не делает в списке (например, удалите сообщение, отметьте как прочитанное и т. Д.) ... Поскольку он имеет дело с inbox, возможно, он должен даже делать ленивую загрузку ... –

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