2011-02-03 16 views
1

Fooというクラスが1つあります。 FooBeanというManagedBeanが1つあります。ページ(Facelet)では、ユーザーから新しいFoo情報を取得し、DBに挿入します。最初にデータを提出すると、印刷ボタンが有効になります。今私は、ユーザーが印刷ボタンをクリックし、PrintFooBeanで印刷ページである他のページ(Facelet)を参照する必要があります。最近挿入されたFooのIDをPrintFooBeanに渡して読み込み、その項目を印刷ページに表示するにはどうすればよいですか?ManagedBeans間のデータの受け渡し

どのような方法が最適ですか? そして私は、新しいブラウザのウィンドウ/タブで印刷ページを見ることを好みます。

+0

http://balusc.blogspot.com/2006/06/communication-in-jsf.html –

+1

@org:この記事はまだJSF 1.2に対象としています。 JSF 2.0には、より多くの優れた方法があります。 – BalusC

答えて

1

リクエストパラメータとして渡します。徐々にJS window.open

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

によって強化

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

または控えめidと印刷Beanを移入します。

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

プリロードidに基づいて、同じBeanにFooデータ。

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

これまで行ってきたことですが、target = "_ blank"またはJSの代わりにJSF標準ソリューションがありますか? – ehsun7b

+1

標準のJSF実装ではありません。キャンディーネスのためには、サードパーティ製の豊富なUI JSFコンポーネントライブラリに向かう必要があります。例えば、この目的のために[''](http://www.primefaces.org/showcase/ui/dialog.jsf)を持つ[PrimeFaces](http://primefaces.org)や['' ](http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf)を選択して即座に行を選択できます。 – BalusC

関連する問題