gpt4 book ai didi

jsf - 在 JSF 中的托管组件之间传递数据

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:11 26 4
gpt4 key购买 nike

是否真的可以在 JSF 中的托管组件之间传递任何数据?如果是,如何实现?

谁能提供 sample 吗?

最佳答案

有几种方法。如果托管 bean 相互关联,最干净的方法就是注入(inject)。根据 JSF 版本和 CDI 是否可用,有不同的方法。

CDI

只需使用 @Inject .

@Named
@SessionScoped
public class Bean1 {

// ...
}

@Named
@RequestScoped
public class Bean2 {

@Inject
private Bean1 bean1; // No getter/setter needed.
}

其他方式也可以,范围并不重要,因为 CDI 在幕后注入(inject)了一个 proxy .

JSF 2.x

使用 @ManagedProperty .

@ManagedBean
@SessionScoped
public class Bean1 {

// ...
}

@ManagedBean
@RequestScoped
public class Bean2 {

@ManagedProperty("#{bean1}")
private Bean1 bean1; // Getter/setter required.
}

在这个特定示例中,其他方法是不可能的,因为 JSF 注入(inject)物理实例而不是代理实例。您只能将相同更广泛范围的 bean 注入(inject)到特定范围的 bean 中。

JSF 1.x

使用 <managed-property>faces-config.xml .

public class Bean1 {

// ...
}

public class Bean2 {

private Bean1 bean1; // Getter/setter required.
}

<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>

另见:

关于jsf - 在 JSF 中的托管组件之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2126943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com