2011-09-09 19 views
1

これは私がやろうとしていることです。 jsf page1のデータをjsf page2で利用できるようにしたいのですが、これはpage1で開いたポップアップウィンドウです。 両方とも別個のマネージドBeanを持っています。 セッションを使用しようとしましたが、nullポインタが発生しました。 JavaScriptを使ってwindow.opener()を使ってpage2のデータを取得していました。 このデータをFacesPortletのprocessAction()メソッドで使用できるようにします。 request.getParameter、request.getAttributesを使用して、すべて無駄にしようとしました。 多くの研究の後、私は何とかprocessAction()メソッドでいくつかのハードコーディングされたデータを送信することができました。しかし、私はpage1から値を送ることができません。 ハードコードされた値を送信する方法は次のとおりです。1つのJSFページからFacesPortletのProcessAction()メソッドにデータを転送

<form name="uploadbaseline" method="post" 
enctype="multipart/form-data" action="<portlet:actionURL><portlet:param name =   "page" value = "someval"/></portlet:actionURL>"> 

これは、フォーム内の他のフィールドが続きます。 この

System.out.println("valuefrompage1"+request.getParameter("page")); 

のような私はのprocessActionの値を取得する()メソッドは、この "someval" を返します。 次のコードを使用して、javascriptを使用してpage1の値を割り当てようとしました。

var val =  window.opener.document.getElementById("BaseLine:EngineModel").value;  
var actionval = "<portlet:actionURL><portlet:param name='page' value=" + val.value + "/></portlet:actionURL>";  
document.uploadbaseline.action = actionval.value; 
document.uploadbaseline.submit(); 

それは「ヴァル」変数の実際の値ではなく、これは値「+ val.value +」を返します。

正しい方向に案内してください。 あなたのお返事をお待ちしております。おかげさまで

+0

私が質問を投稿した方法に混乱がある場合は教えてください。私は同じことを明確にすることを熱望する以上のものになるでしょう。 – Waheeb

+0

申し訳ありませんが、私はポートレットを作成しません。 – BalusC

+0

window.openerとクエリ文字列以外の親ページの値を取得する方法はありますか? – Waheeb

答えて

0

最後に溶液を見いだした。 問題は、私のフォームのenctype属性にあります。 これにより、通常のrequest.getParameterを使用してページフィールドにアクセスできなくなります。 これは別の方法で処理する必要があります。 ここにあります。

for (Iterator requestItems = upload.parseRequest(request).iterator(); requestItems.hasNext();) { 
    item = (FileItem) requestItems.next(); // Get each item in the request 
    if (!item.isFormField()) { 
     //handle the file data 
    } else { 
     System.out.println((String)item.getString()); 
    } 
} 
関連する問題