2012-05-01 25 views
0

我使用的是JSF 2.0,需要允許用戶上傳圖片。我以爲使用<t:inputFileUpload>並閱讀它的行爲類似於<input type="file">但是我永遠不會在我使用的任何瀏覽器中看到「瀏覽」選項。爲什麼<t:inputFileUpload value =「#{myBean.uploadedFile}」/>無法正常工作?

我已經正確配置了我的web.xml,並且以<h:form enctype="multipart/form-data">作爲我的表單開始。表單中只有一個標籤。我也收集了所有必需的罐子。

任何人都會遇到這種情況嗎?

+0

打開網頁瀏覽器,右擊和*查看來源*。 標籤被解析了嗎?或者它在生成的HTML輸出中仍然沒有解析? – BalusC

+0

我可以看到,後面跟着提交按鈕的輸入標籤。在檢查元素,你可以看到該屬性已被賦予尺寸「0px x 0px」 – user997052

回答

0

如果你看到<t:inputFileUpload>未解析在生成的HTML輸出,而不是它應該產生,那麼就意味着t:xxx命名空間沒有註冊,或者包含它的JAR文件不在web應用程序的運行時<input type="file">類路徑。通過這種方式,JSF/Facelets將其視爲純文本而不是真正的JSF標記,並且最終會在HTML輸出中解析出來。網頁瀏覽器只能理解HTML標籤,所以它對於未解析的JSF標籤什麼也不做,因此你在瀏覽器的UI展示中什麼都看不到。

確保戰斧JAR文件都在webapp的/WEB-INF/lib文件夾,並確保您已經聲明在視圖中t:xxx命名空間如下:

xmlns:t="http://myfaces.apache.org/tomahawk" 
+0

我檢查的第一件事是WEB-INF/lib文件夾和我的xmlns聲明。一切看起來確切,我以前從來沒有見過這樣的事情。從apache部署myfaces - 示例顯示它正常工作。從工作示例中挑選所有罐子,包括我需要的其他任何罐子,仍然不解析標籤。 – user997052

+0

您確定您使用正確的JAR作爲戰斧嗎? Tomahawk進來「爲JSF 1.2」和「爲JSF 2.0」口味。您確定XML名稱空間是在Tomahawk文件上傳標籤所在的頂級視圖中聲明的(因此不僅僅是在某些主模板中)? – BalusC

+0

我已經開始了一個簡單的單個xhmtl頁面應用程序,該應用程序擁有用於JSF 2.0的最新Tomahawk 1.1.12 jar包(在faces-config中定義),它仍然不解析標籤。沒有主模板。 – user997052