Ho un gruppo di desiderosiApplicationScoped
fagioli gestiti. Alcuni di essi sono iniettati in altri dall'annotazione ManagedProperty
, formando un albero di dipendenze. Ogni fagiolo dipendente manipola il suo genitore dopo la costruzione.Fagioli gestiti ApplicationScoped Eager costruiti più volte
Tuttavia, sembra che venga creata una nuova istanza per ciascuna iniezione, rendendo così inutili le precedenti manipolazioni. A mio modo di vedere, un bean ApplicationScoped
deve essere creato una sola volta. Ho frainteso o perché sta succedendo questo? È perché sono desiderosi?
Ecco un esempio:
ParentBean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean(eager = true)
@ApplicationScoped
public class ParentBean
{
static int initCount = 0;
// ...
@PostConstruct
public void init()
{
++initCount; // Will end up being between 1 and 3. Expected always 1.
// ...
}
}
Child1Bean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean(eager = true)
@ApplicationScoped
public class Child1Bean
{
@ManagedProperty("#{parentBean}") ParentBean parentBean;
public ParentBean getParentBean()
{
return parentBean;
}
public void setParentBean(ParentBean parentBean)
{
this.parentBean = parentBean;
}
@PostConstruct
public void init()
{
// manipulate parentBean
}
}
Child2Bean.java
package example;
import javax.annotation.PostConstruct;
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
@ManagedBean(eager = true)
@ApplicationScoped
public class Child2Bean
{
@ManagedProperty("#{parentBean}") ParentBean parentBean;
public ParentBean getParentBean()
{
return parentBean;
}
public void setParentBean(ParentBean parentBean)
{
this.parentBean = parentBean;
}
@PostConstruct
public void init()
{
// manipulate parentBean
}
}
puoi dare un esempio di codice di come lo fai? –
Ok, ho aggiunto un esempio. – Spomf
non penso che cambierò, ma prova '@ManagedProperty (value =" # {parentBean} ")', – Daniel