JSF 2.0在bean(或页面?)之间传递数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSF 2.0在bean(或页面?)之间传递数据相关的知识,希望对你有一定的参考价值。

我正在使用JSF 2.0

我的管理部分中有一个表单,我将在列表中选择一些用户。

表单(selectusers.xhtml)将这些用户添加到bean中的列表(SelectUsers.java)。

在我选择了一些用户之后,我会将用户列表从SelectUsers.java传递到另一个bean(AddAddressBean.java)并继续以另一种形式添加信息(addadress.xhtml),其中设置了其他相关的属性为每个用户添加AddAddressBean。

我不知道如何实现它。我想AddAddressBean.java应该是独立的(所以我可以和其他bean一起使用),所以我更喜欢AddAddressBean.java不知道其他bean。

你能帮我么? =)

B.R Carl

答案

想到几个快速的事情:

  1. 也许你只能为那些相关页面使用一个bean,使用@SessionScoped或更短的CDI @ConversationScope,或者这是三者中最好的,DeltaSpike @ViewAccessScoped
  2. 单击第1页上的按钮,它将转到第2页,在第1个bean中,您可以使用Flash对象来存储要传递的对象,在第二个bean的@PostConstruct方法中,您可以获得所有Flash对象中的对象
  3. 如果您不介意使用会话范围,您仍然可以使用2个bean,并且一个bean可以使用jsf way(@ManagedProperty)或Java EE注入方式(@Inject)或弹簧方式(如果使用spring)引用另一个bean( @Autowired)
另一答案

这是我如何实现的(使用ConversationScoped作为@bertie说)。

豆1:

@Named("conversationBean1")
@ConversationScoped
public class ConversationBean1 implements Serializable {
          //---start conversation----

  }

豆2:

@Named("conversationBean2")
@ConversationScoped
public class ConversationBean2 implements Serializable 
  {
      @Inject
      private ConversationBean1 conversationBean1;
   }

以上是关于JSF 2.0在bean(或页面?)之间传递数据的主要内容,如果未能解决你的问题,请参考以下文章

JSF 2.0 AJAX:使用 jsf.ajax.request(或其他方式)从 javascript 调用 bean 方法

托管 bean 问题中的用户输入验证(JSF 2.0)

在 JSF 2.0 中动态创建输入字段并将其链接到支持 bean

迁移到 tomcat 后,将枚举值作为参数从 JSF 页面传递给 bean 方法失败

JSF 2.0将动态表单保存到数据库[重复]

当通过链接或后退按钮打开时,强制 JSF 刷新页面/视图/表单