2011-06-14 49 views
0

我有一個h:inputText和一個rich:fileUpload。我希望inputText在單擊時調用fileUpload。我會如何去做這件事?現在,我有這樣的:RichFaces的輸入文本調用文件上傳

<h:inputText id="uploadName" maxlength="255" value="#{bean.fileName}" required="false" 
            onclick="INVOKE FILEUPLOAD" 
            > 
             </h:inputText>         
             <rich:fileUpload id="uploadFile" addControlLabel="Upload" 
              fileUploadListener="#{bean.fileUploadListener}" 
              uploadData="#{bean.data}" 
              listWidth="100px" listHeight="0px" maxFilesQuantity="1" 
              immediateUpload="true" acceptedTypes="xml" allowFlash="false" 
              status="eventQueueFileUpload"> 

             </rich:fileUpload> 

從本質上講,我想的inputText和文件上傳到具有相同的功能,我只想表明在inputText的文件名。

感謝您的幫助

回答

2

你不能強迫瀏覽器來觸發文件上傳。 可以使用的CSS技巧是通過文本輸入定位文件輸入並使其透明。然後它看起來像你有一個輸入字段(並且注意你甚至不需要它是一個文本輸入;它可以只是一個<span>,因爲你需要表單來包含來自文件輸入本身的參數值無論如何)。

使這項工作適合體面的瀏覽器並不難,但對IE來說可能是一個小小的痛苦。 IE7讓人們輸入文件輸入,你可能不需要。當輸入點擊任何地方時,其他所有內容都將啓動文件瀏覽器對話框。

+0

我該如何去使用跨度這個?我對richfaces很陌生,我如何將文件上傳綁定到跨度? – intl 2011-06-15 12:54:18

+0

我的意思是,如果你想顯示選定的文件名,你可以把它放到一個普通的''標籤中;它不一定是''。您可以通過處理來自文件輸入的「更改」事件來在「」中顯示文件名。請注意,瀏覽器不會爲您提供完整的路徑名,只是文件的名稱。 – Pointy 2011-06-15 13:16:52

+0

我需要成爲inputText,它是設計規範的一部分。 – intl 2011-06-15 17:38:08