2011-05-12 219 views
1

基本上我們有一個JSF應用程序,它動態生成一個鏈接到一個提供PDF文件的servlet。我需要將PDF的路徑傳遞給servlet。我不知道如何將數據傳遞給servlet。將數據傳遞給servlet

在查看我們:

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

在控制器中,我們有

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

基本上,我需要以某種方式發送保存的文件夾和文件名的WelcomeServlet的變量,以便WelcomeServlet可以使用它。

回答

2

將它作爲請求參數或pathinfo傳遞給通常的Servlet方式。

下面是一個例子假設PATHINFO優先和#{bean.pdfpath}回報類似filename.pdf

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

在映射在/pdf/*的URL模式的servlet可以爲doGet()方法如下得到它:

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

作爲一個完全不同的選擇,你也可以讓JSF在命令鏈接/命令按鈕操作方法中將PDF寫入響應。

+0

看到我對Jigar的回答評論。這仍然有效嗎? – Catfish

+0

我不明白爲什麼你會在控制器中生成視圖。只要在視圖中完成這項工作。如果你確實*堅持,你可以使用''來顯示它。但它很臭。 – BalusC

+0

我已更新我的問題,並提供更多信息。 – Catfish

0

保持位置固定生成/創建的PDF文件,並只傳遞文件的名稱,如

/pdfServlet?fileName=#{someBean.someFileName} 

在servlet的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如果我們在servlet中添加頭文件?或者只是將用戶重定向到文件? –