Domanda

Sto cercando una soluzione per sostituire l'annotazione @ManagedBean(eager=true) in JSF 2.2.

Ho preso una buona nota di proposte come che consente L'esecuzione del codice all'avvio dell'applicazione si avvia.

Ho bisogno tuttavia di accedere al FacesContext, quindi questa soluzione non funziona: FacesContext.getCurrentInstance() è ancora NULL in questo momento.

Ho provato a trovare alternative a AfterDeploymentValidation in SPI, ma non ho trovato nulla.

Mentre gli sviluppatori di Deltaspike non sembrano pianificare di implementare una sostituzione a @ManagedBean(eager=true) E come omefaces non supporta ancora questo tipo di soluzione, Vedi . Sto inviando un messaggio in una bottiglia.

Per il momento, accedo solo al fagiolo @ManagedScoped(eager=true), trasformato in un @Named, nella mia intestazione XHTML comune WebApp, ma è un po 'brutto.

È stato utile?

Soluzione

La soluzione migliore per un'applicazione JSF con DeltaSpike è la seguente:

@ApplicationScoped
public class MyBean
{
    public void init(@Observes PostConstructApplicationEvent event)
    {
        // init here
    }
}
.

Altri suggerimenti

Dal momento che onnifaces 1.8, c'è un CDI compatibile @Eager che non funziona solo su @Named @ApplicationScoped, ma ALS su @SessionScopedGcode di CDI e @RequestScoped @ViewScoped.Vedi anche il Iscrizione del blog e showcase Esempio .

Puoi usarlo con @Eager @ApplicationScoped:

import javax.enterprise.context.ApplicationScoped;
import javax.inject.Named;
import org.omnifaces.cdi.Eager;

@Named
@Eager
@ApplicationScoped
public class Bean {
    // ...
}
.

o con @Startup , che è uno stereotipoPer @Eager @ApplicationScoped:

import javax.inject.Named;
import org.omnifaces.cdi.Startup;

@Named
@Startup
public class Bean {
    // ...
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top