2012-02-01 19 views
0

私はJSF1.2のselectOneMenuコンポーネントを持っています。
は現在、ユーザーがドロップダウンメニューから項目を選択し、その後、新しいブラウザウィンドウでURLを開くために、出力リンクをクリック:URLをhで開く:selectOneMenu

<h:selectOneMenu value="#{itemSelected}" valueChangeListener="#{someclass.generateInfoForURL}" onchange="submit()" > 
    <s:selectItems var="_items" value="#{itemsList}" label="#_items.itemName}" /> 
    <s:convertEntity /> 
</h:selectOneMenu> 

<h:outputLink value="URL&amp;generatedInfo=#{someclass.component.generatedInfo}" target="_blank" > 
    <f:verbatim>View Report</f:verbatim>    
</h:outputLink> 

私は必要なもの。ユーザーがドロップダウンアイテムの1つを選択すると、リンクを選択する中間ステップを使用せずに新しいページのURLを開く必要があります。バッキングBeanにURLを作成できますが、新しいブラウザウィンドウを開くにはどうすればよいですか?

答えて

2

URLを項目値として入力し、フォームを送信する代わりにJavaScriptを使用して新しいタブ/ウィンドウで開きます。すべてのURLがすでに正しく準備されていることを確認する必要があります。

など。 `

<h:selectOneMenu onchange="window.open(value)"> 
    <f:selectItem itemLabel="Select page.." /> 
    <f:selectItem itemLabel="page1" itemValue="page1.jsf" /> 
    <f:selectItem itemLabel="page2" itemValue="page2.jsf" /> 
    <f:selectItem itemLabel="page3" itemValue="page3.jsf" /> 
    ... 
</h:selectOneMenu> 

+0

Iが試し(あなたはもちろん、上記だけで基本的なキックオフの一例であり、<f/s:selectItems>として供給することができます) = "window.locationの=のhttp:// '#{ourHostName} /report_war/preview?__report=reportNmae.rptdesign & rpt_id = \t \t '#{someclass.generateInfoForURL()}'"> 'ページはロードされますが、generateInfoForURLメソッドがページのロード時に実行され、ドロップダウンからアイテムを選択すると何も行われません。私は何か見落としてますか? – gebuh

+0

JS構文が無効です。引用符は、EL式の周りではなく、JS文字列の周りを移動する必要があります。簡単には、項目値が正しい値を返すようにするだけです。 EL式は、値を変更すると再評価されません。今、あなたが達成しようとしているものが良く見えるので、代わりに値変更リスナメソッドでリダイレクトを実行したいかもしれません。答えを例で更新しました。 – BalusC

+0

thanx BalusCは動作しますが、新しいページを開くことはありません。現在のページをリダイレクトします。私はそれに1つのcuzを与えています。私はこれを他の場所で必要とします。私が新しいページを開くためにJSを動かすことができないなら、答えとしてマークします。 – gebuh