我有一个 h:inputText 和一个 rich:fileUpload。我希望 inputText 在单击时调用 fileUpload。我该怎么做呢?现在,我有这个:
<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 和 fileUpload 具有相同的功能,我只是在 inputText 中显示文件名。
感谢您的帮助
最佳答案
您无法强制浏览器触发文件上传。您可以做的是使用CSS技巧将文件输入定位在文本输入之上并使其透明。然后看起来您已经有了一个输入字段(请注意,您实际上甚至不需要它成为文本输入;它可以只是 <span>
,因为您需要表单来包含文件中的参数值无论如何输入本身)。
在正常的浏览器中实现此功能并不是非常困难,但对于 IE 来说可能会有点麻烦。 IE7 允许人们在文件输入中键入内容,而您可能不希望这样做。当在任意位置单击输入时,其他所有内容都会启动文件浏览器对话框。
关于javascript - RichFaces 输入文本调用文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6350375/