Bal*_*usC 11
有几种方法.如果托管bean彼此相关,那么最简单的方法就是管理属性注入.假设Bean1具有与Bean2相同的范围或更广泛的范围.首先给Bean2一个Bean1属性:
public class Bean2 {
private Bean1 bean1; // +getter +setter.
}
Run Code Online (Sandbox Code Playgroud)
然后将Bean1声明为Bean2 faces-config.xml的托管属性:
<managed-bean>
<managed-bean-name>bean1</managed-bean-name>
<managed-bean-class>com.example.Bean1</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>bean2</managed-bean-name>
<managed-bean-class>com.example.Bean2</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>bean1</property-name>
<value>#{bean1}</value>
</managed-property>
</managed-bean>
Run Code Online (Sandbox Code Playgroud)
这样,bean2实例可以即时访问bean1实例.
如果由于某些原因不想使用托管属性注入,那么您也Application#evaluateExpressionGet()可以通过编程方式获取它.这是在Bean2中检索Bean1的示例:
FacesContext context = FacesContext.getCurrentInstance();
Bean1 bean1 = (Bean1) context.getApplication().evaluateExpressionGet(context, "#{bean1}", Bean1.class);
Run Code Online (Sandbox Code Playgroud)
该Bean1但是必须已经被声明为托管bean bean1在faces-config.xml.
有关在JSF中传递数据的更多信息和提示,您可能会发现本文很有用.
| 归档时间: |
|
| 查看次数: |
10587 次 |
| 最近记录: |