JSF - fagioli gestiti

Managed Bean è una normale classe Java Bean registrata con JSF. In altre parole, Managed Beans è un Java bean gestito dal framework JSF. Il bean gestito contiene i metodi getter e setter, la logica aziendale o anche un bean di supporto (un bean contiene tutto il valore del modulo HTML).

I bean gestiti funzionano come modello per il componente UI. È possibile accedere a Managed Bean dalla pagina JSF.

In JSF 1.2, un bean gestito doveva registrarlo nel file di configurazione JSF come facesconfig.xml. A partire dalJSF 2.0in seguito, i bean gestiti possono essere facilmente registrati utilizzando le annotazioni. Questo approccio mantiene i bean e la sua registrazione in un unico posto, quindi diventa più facile da gestire.

Utilizzo della configurazione XML

<managed-bean>
   <managed-bean-name>helloWorld</managed-bean-name>
   <managed-bean-class>com.tutorialspoint.test.HelloWorld</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
</managed-bean> 

<managed-bean>
   <managed-bean-name>message</managed-bean-name>
   <managed-bean-class>com.tutorialspoint.test.Message</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

Utilizzo dell'annotazione

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
   @ManagedProperty(value = "#{message}")
   private Message message;
   ...
}

@ManagedBean Annotation

@ManagedBeancontrassegna un bean come bean gestito con il nome specificato nell'attributo name. Se l'attributo name non è specificato, il nome del bean gestito sarà impostato per impostazione predefinita sulla parte del nome della classe del nome completo della classe. Nel nostro caso, sarebbe helloWorld.

Un altro attributo importante è eager. Se eager = "true", il bean gestito viene creato prima che venga richiesto per la prima volta, altrimenti viene utilizzata l'inizializzazione "lazy" in cui il bean verrà creato solo quando viene richiesto.

Annotazioni di ambito

Le annotazioni dell'ambito impostano l'ambito in cui verrà posizionato il bean gestito. Se l'ambito non è specificato, per impostazione predefinita il bean richiederà l'ambito. Ciascun ambito viene discusso brevemente nella tabella seguente.

S.No Ambito e descrizione
1

@RequestScoped

Bean vive finché vive la richiesta-risposta HTTP. Viene creato su una richiesta HTTP e viene distrutto quando la risposta HTTP associata alla richiesta HTTP è terminata.

2

@NoneScoped

Bean vive fino a quando una singola valutazione EL. Viene creato su una valutazione EL e viene distrutto immediatamente dopo la valutazione EL.

3

@ViewScoped

Bean vive finché l'utente interagisce con la stessa vista JSF nella finestra / scheda del browser. Viene creato su una richiesta HTTP e viene distrutto una volta che l'utente esegue il postback a una visualizzazione diversa.

4

@SessionScoped

Bean vive finché dura la sessione HTTP. Viene creato alla prima richiesta HTTP che coinvolge questo bean nella sessione e viene distrutto quando la sessione HTTP viene invalidata.

5

@ApplicationScoped

Bean vive finché vive l'applicazione web. Viene creato alla prima richiesta HTTP che coinvolge questo bean nell'applicazione (o quando l'applicazione web si avvia e l'attributo eager = true è impostato in @ManagedBean) e viene distrutto quando l'applicazione web si chiude.

6

@CustomScoped

Il bean vive finché rimane la voce del bean nella mappa personalizzata, creata per questo ambito.

@ManagedProperty Annotation

JSF è un semplice framework statico DI (Dependency Injection). Utilizzando@ManagedProperty annotazione, la proprietà di un bean gestito può essere iniettata in un altro bean gestito.

Applicazione di esempio

Creiamo un'applicazione JSF di prova per testare le annotazioni precedenti per i bean gestiti.

Passo Descrizione
1 Crea un progetto con un nome helloworld sotto un pacchetto com.tutorialspoint.test come spiegato nel capitolo JSF - Crea applicazione .
2 Modifica HelloWorld.java come spiegato di seguito. Mantieni invariato il resto dei file.
3 Crea Message.java in un pacchetto com.tutorialspoint.test come spiegato di seguito.
4 Compilare ed eseguire l'applicazione per assicurarsi che la logica aziendale funzioni secondo i requisiti.
5 Infine, crea l'applicazione sotto forma di file war e distribuiscila nel server Web Apache Tomcat.
6 Avvia la tua applicazione web utilizzando l'URL appropriato come spiegato di seguito nell'ultimo passaggio.

HelloWorld.java

package com.tutorialspoint.test;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "helloWorld", eager = true)
@RequestScoped
public class HelloWorld {
   @ManagedProperty(value = "#{message}")
   private Message messageBean;
   private String message;
   
   public HelloWorld() {
      System.out.println("HelloWorld started!");   
   }
   
   public String getMessage() {
      
      if(messageBean != null) {
         message = messageBean.getMessage();
      }       
      return message;
   }
   
   public void setMessageBean(Message message) {
      this.messageBean = message;
   }
}

Message.java

package com.tutorialspoint.test;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean(name = "message", eager = true)
@RequestScoped
public class Message {
   private String message = "Hello World!";
	
   public String getMessage() {
      return message;
   }
   public void setMessage(String message) {
      this.message = message;
   }
}

home.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">
   <head>
      <title>JSF Tutorial!</title>
   </head>
   
   <body>
      #{helloWorld.message}
   </body>
</html>

Una volta che sei pronto con tutte le modifiche apportate, compiliamo ed eseguiamo l'applicazione come abbiamo fatto nel capitolo JSF - Crea applicazione. Se tutto va bene con la tua applicazione, questo produrrà il seguente risultato.