对于 JSF 创建其托管 Bean 的顺序有任何保证吗?
我的情况大致如下:我在同一页面中使用了 2 个 bean。创建第二个时,我希望它从第一个获取一些信息,例如在其 @PostConstruct 方法中(以避免访问数据库)。
有什么方法可以确保第一个 bean 实际上在第二个 bean 之前创建,以便成功获取数据?
您可以通过将一个 bean 作为另一个 bean 的托管属性注入来确保这一点。
假设您已经使用 JSF 2.0,请使用@ManagedProperty:
@ManagedBean
@RequestScoped
public class FirstBean {
// ...
}
Run Code Online (Sandbox Code Playgroud)
@ManagedBean
@RequestScoped
public class SecondBean {
@ManagedProperty(value="#{firstBean}")
private FirstBean firstBean; // +setter
@PostConstruct
public void init() {
// firstBean is available here.
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者当您仍在使用 JSF 1.2 时,请使用<managed-property>in faces-config.xml:
<managed-bean>
<managed-bean-name>firstBean</managed-bean-name>
<managed-bean-class>com.example.FirstBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>secondBean</managed-bean-name>
<managed-bean-class>com.example.SecondBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>firstBean</property-name>
<value>#{firstBean}</value>
</managed-property>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |