在托管豆之间传递数据

时间:2011-02-03 15:41:58

标签: java jsf jsf-2 managed-bean

我有一个名为Foo的类。一个ManagedBean名为FooBean。在页面(Facelet)中,我从用户那里获得了一个新的Foo信息并将其插入到DB中。首次提交数据后,将启用打印按钮。现在我需要用户单击打印按钮并查看另一个页面(Facelet),它是PrintFooBean的打印页面。如何将最近插入的Foo的ID传递给PrintFooBean并加载它并在打印页面上显示其项目?

最好的方法是什么? 我更喜欢用户在新的浏览器窗口/标签页中看到打印页面。

1 个答案:

答案 0 :(得分:1)

将其作为请求参数传递。

<a href="print.jsf?id=#{foo.id}" target="_blank">print</a>

或由JS window.open

不显眼地逐步增强
<a href="print.jsf?id=#{foo.id}" target="_blank"
    onclick="window.open('print.jsf?id=#{foo.id}'); return false;">print</a>

使用id填充print bean。

@ManagedProperty(value="#{param.id}")
private Long id;

根据Foo在同一个bean中预加载id数据。

@PostConstruct
public void init() {
    this.foo = fooDAO.find(id);
}