我有一个支持bean,我想在实例化bean时加载一些列表,以便列表可以在下拉列表中使用。
是否有一个方法只在首次创建bean时被调用?
答案 0 :(得分:11)
另一种方法是使用@PostConstruct属性让一个方法在Spring / JSF为你创建bean之后为你做初始化。
例如:
@PostConstruct
public void init()
{
List<SelectItem> list = new ArrayList<SelectItem)();
list = getService().getMenuItems();
setMenuItems( list );
}
答案 1 :(得分:1)
您可以使用静态初始化程序:
static {
//set up lists
}
或者如果它们不是静态列表,那么初始化块:
{
//set up lists
}
编辑*请记住,这些支持bean只是POJO,并且像任何其他Java对象一样工作。您可以像这样设置faces-config.xml:
<managed-bean-class>mymanagedBean.ConstructorName</managed-bean-class>
就个人而言,我发现只使用初始化程序块更容易。这就是它们的用途。
答案 2 :(得分:0)
如果你想要一个纯粹的声明性值列表,faces-config.xml提供了一些选项:
<managed-bean>
<managed-bean-name>staticListOfStuff</managed-bean-name>
<managed-bean-class>java.util.ArrayList</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
<list-entries>
<value>Value 1</value>
<value>Value 2</value>
</list-entries>
</managed-bean>
这个内容将在JSF 1.2 spec的5.3管理Bean工具中介绍。
答案 3 :(得分:0)
JSF-y这样做的方法是将PhaseListener
绑定到<f:view>
,使你的bean实现PhaseListener
,然后在实现方法中填充所需阶段的bean