使用外部按钮进行rich:fileUpload - java

我正在使用组件rich:fileUpload将文件上传到我的服务器,问题是这些文件与用户填写的表单一起使用,所以我想使用一个外部按钮来执行此操作。

用户选择要上传的文件,填写表格,然后单击页面底部的“提交”按钮。这将使用表格上传文件。我已经这样尝试过了:

我可以将按钮隐藏在fileUpload面板内,以便用户不要单击它。

    <rich:fileUpload id="fileUploadId"
        style="width: 100%; height: 130px;"
        fileUploadListener="#{documentsBean.listener}"
        maxFilesQuantity="1"
        uploadButtonClass="display-none"
        uploadButtonClassDisabled="display-none">
    </rich:fileUpload>

我尝试过的按钮是

<a4j: commandButton  id="uploadFormButton"
        value="Attach"
        onclick="#{rich:component('fileUploadId')}.submitForm();"
        oncomplete="#{rich:component('fileUploadId')}.clear(); return false;"/>

但这是行不通的。

参考方案

我不知道是否有一种方法可以完全满足您的需求,但是这里可以使用另一种解决方案:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:st="http://spectotechnologies.com/jsf"
    xmlns:t="http://myfaces.apache.org/tomahawk">

    ...

    <h:form enctype="multipart/form-data">
        ... your fields ...

        <t:inputFileUpload value="#{bean.document}" />

        <h:commandButton value="Submit" actionListener="#{bean.onButtonSubmitClick}" />
    </h:form>
</html>

和豆:

@ManagedBean
@RequestScoped
public class Bean
{
    private UploadedFile m_oDocument;

    public void setDocument(UploadedFile p_oDocument)
    {
        m_oDocument = p_oDocument;
    }

    @UploadedFileNotEmpty
    @UploadedFileSize(max="10000000")
    @UploadedFileExtension(accept="doc,docx,pdf,txt,rtf,xls,xlsx,zip,rar,jpg,jpeg,jpe,bmp,gif,png,csv,ppt,pptx,odp,pic,odt,ods")
    public UploadedFile getDocument()
    {
        return m_oDocument;
    }

    public void onButtonSubmitClick(ActionEvent p_oEvent)
    {
        ...
    }
}

希望这可以帮助!

Java-搜索字符串数组中的字符串 - java

在Java中,我们是否有任何方法可以发现特定字符串是字符串数组的一部分。我可以避免出现一个循环。例如String [] array = {"AA","BB","CC" }; string x = "BB" 我想要一个if (some condition to tell wheth…

Java Scanner读取文件的奇怪行为 - java

因此,在使用Scanner类从文件读取内容时,我遇到了一个有趣的问题。基本上,我试图从目录中读取解析应用程序生成的多个输出文件,以计算一些准确性指标。基本上,我的代码只是遍历目录中的每个文件,并使用扫描仪将其打开以处理内容。无论出于何种原因,扫描程序都不会读取其中的一些文件(所有UTF-8编码)。即使文件不是空的,scanner.hasNextLine()在…

Java Globbing模式以匹配目录和文件 - java

我正在使用递归函数遍历根目录下的文件。我只想提取*.txt文件,但不想排除目录。现在,我的代码如下所示:val stream = Files.newDirectoryStream(head, "*.txt") 但是这样做将不会匹配任何目录,并且返回的iterator()是False。我使用的是Mac,所以我不想包含的噪音文件是.DS_ST…

直接读取Zip文件中的文件-Java - java

我的情况是我有一个包含一些文件(txt,png,...)的zip文件,我想直接按它们的名称读取它,我已经测试了以下代码,但没有结果(NullPointerExcepion):InputStream in = Main.class.getResourceAsStream("/resouces/zipfile/test.txt"); Buff…

Java RegEx中的单词边界\ b - java

我在使用\b作为Java Regex中的单词定界符时遇到困难。对于text = "/* sql statement */ INSERT INTO someTable"; Pattern.compile("(?i)\binsert\b");找不到匹配项Pattern insPtrn = Pattern.compile(&…