Сделайте область действия bean-сессии и аннотируйте метод с помощью @PostConstruct
.Если вы настаиваете на том, чтобы держать его в области запроса, разделите эту часть на bean-объект области сеанса и сделайте его управляемым свойством bean-объекта области запроса, используя @ManagedProperty
.
@ManagedBean
@RequestScoped
public class Bean {
@ManagedProperty(value="#{insultBean}")
private InsultBean insultBean;
}
и
@ManagedBean
@SessionScoped
public class InsultBean {
@PostConstruct
public void init() {
this.bossInsult = generateBossInsult();
}
}
Тогда JSF позаботится о том, чтобы он создавался и вызывался только один раз во время сеанса.
Обновление : извините, вы используете JSF 1.x.Если это 1.2, то следующее достигает того же:
public class Bean {
private InsultBean insultBean;
}
и
public class InsultBean {
@PostConstruct
public void init() {
this.bossInsult = generateBossInsult();
}
}
и
<managed-bean>
<managed-bean-name>insultBean</managed-bean-name>
<managed-bean-class>com.example.InsultBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean</managed-bean-name>
<managed-bean-class>com.example.Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>insultBean</property-name>
<value>#{insultBean}</value>
</managed-property>
</managed-bean>