在 ManagedBean 之间传递数据

发布于 2024-10-15 21:16:29 字数 260 浏览 1 评论 0原文

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

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

I have one Class called Foo. And one ManagedBean called FooBean. In a page (Facelet) I get a new Foo info from user and insert it to DB. After first submission of data the print button will be enabled. Now I need the user click the print button and see the other page (Facelet) which is the print page with PrintFooBean. How can I pass the ID of the recently inserted Foo to the PrintFooBean and load it and display its items on the printing page?

What is the best way?
And I prefer the user to see the print page in a new browser window/tab.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一桥轻雨一伞开 2024-10-22 21:16:29

将其作为请求参数传递。

<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);
}

Pass it as request parameter.

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

or unobtrusively progressively enhanced by JS window.open

<a href="print.jsf?id=#{foo.id}" target="_blank"
    onclick="window.open('print.jsf?id=#{foo.id}'); return false;">print</a>

Populate the print bean with the id.

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

Preload the Foo data in same bean based on id.

@PostConstruct
public void init() {
    this.foo = fooDAO.find(id);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文