【问题标题】:Pass Data between ManagedBeans在 ManagedBeans 之间传递数据
【发布时间】:2011-06-20 18:24:44
【问题描述】:

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

最好的方法是什么? 而且我更喜欢用户在新的浏览器窗口/选项卡中查看打印页面。

【问题讨论】:

标签: java jsf jsf-2 managed-bean


【解决方案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 填充打印bean。

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

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

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

【讨论】:

  • 这就是我到目前为止所做的,但是有没有 JSF 标准解决方案来代替 target="_blank" 或 JS?
  • 不在标准 JSF 实现中。对于糖果,您需要前往第 3 方丰富的 UI JSF 组件库。例如 PrimeFaces 有一个 &lt;p:dialog&gt; 用于此目的,甚至 &lt;p:dataTable&gt; 具有即时行选择。
猜你喜欢
  • 2011-09-04
  • 1970-01-01
  • 2014-02-15
  • 2014-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多