2011-05-12 8 views
1

基本的には、PDFファイルを処理するサーブレットへのリンクを動的に生成するJSFアプリケーションがあります。私はPDFのパスをサーブレットに渡す必要があります。私はどのようにサーブレットにデータを渡すのか分かりません。私は基本的になるように何とかWelcomeServletにフォルダとファイル名を保持する変数を送信する必要があり、我々はサーブレットにデータを渡す

public string getFile() { 
    ....... 
    // some variable here that holds the folder and file name 
    result += "<a href=\"/catalog/catalog/WelcomeServlet\" target=\"_blank\">" + name + "</a> 
    ....... 
} 

を持つコントローラで

<d:protocolSection value="#{detailBacker.studyData}" id="protocol" /> 

:私たちが持っているビューで

WelcomeServletはそれを使用できます。

答えて

2

通常のサーブレットの方法で要求パラメータまたはpathinfoとして渡します。

doGet()方法で次のようにあなたがそれを得ることができ /pdf/*のURLパターンにマッピングされたサーブレットで

<h:outputLink value="pdf/#{bean.pdfpath}">Download pdf</h:outputLink> 

:ここ

filename.pdfのようなものをパス情報が好まれると仮定し、#{bean.pdfpath}戻っ例です

String pdfpath = request.getPathInfo(); 
// ... 

全く別の方法として、 JSFがcommandlink/commandbuttonアクションメソッドでレスポンスにPDFを書き込ませることもできます。

+0

ジガールの回答にコメントしてください。ウィルはまだ動作しますか? – Catfish

+0

コントローラでビューを生成する理由がわかりません。ビューで仕事をしてください。あなたが実際に*本当に*主張しているなら、あなたは ''を使ってそれを表示することができます。しかし、それは悪臭を放つ。 – BalusC

+0

私は質問で更なる情報を更新しました。 – Catfish

0

/生成の固定位置を維持するには、PDFファイルを作成し、ちょうどサーブレットの中で

/pdfServlet?fileName=#{someBean.someFileName} 

のようにファイルの名前を渡しdoGet()は、ファイル名を取得し、ファイルを提供しています。

String fileName = request.getParameter("fileName"); 
+0

Note that this way causes MSIE to save the file as 'pdfServlet' instead of the specified filename. It namely ignores the filename in the content disposition header and takes the last part of the path. – BalusC

+0

Now can I actually put that jsf code in a dynamically generated anchor tag? For example I have a controller that is generating the tag this way 'result += "" + name + "' – Catfish

+0

@BalusCサーブレットにヘッダーを追加するか、単にユーザーをファイルにリダイレクトする場合はどうすればいいですか? –

関連する問題