Primefaces FileUpload使用p:remoteCommand调用指定方法

时间:2017-11-23 08:03:17

标签: file-upload primefaces

在Primefaces 6.0中,我需要在上传文件之前对其进行处理,当我完成按下浏览按钮时,我会尝试调用另一种方法。我尝试使用remoteCommand,但它不起作用。

<p:fileUpload allowTypes="/(\.|\/)(csv|zip)$/"
        value="#{geoDataBean.file}" mode="simple" oncomplete="loadCountries();"
        update="countriesDropdownPanel">
</p:fileUpload>

<p:remoteCommand name="loadCountries" process="@this"
        action="#{geoDataBean.loadCountries()}"/>       

<h:panelGroup id="countriesDropdownPanel">
    <p:selectCheckboxMenu 
            widgetVar="countryCode" 
            id="countryCodeId"
            value="#{geoDataBean.selectedCountryCodes}"
            label="#{geoDataBean.label}" 
            multiple="true"
            panelStyle="width:198px">
        <p:ajax 
                event="toggleSelect" 
                update="countryCodeId"
                listener="#{geoDataBean.update}" />
        <f:selectItems value="#{geoDataBean.countryCodeList}" />
    </p:selectCheckboxMenu>
</h:panelGroup>

<h:commandButton value="Import" action="#{geoDataBean.importGeoData}" />

我需要在导入文件之前对其进行处理,因为我需要查看文件中存在哪些国家/地区才能导入文件。

我使用UploadedFile。

1 个答案:

答案 0 :(得分:0)

尝试在onchange中调用该函数,而不是oncomplete

<p:fileUpload allowTypes="/(\.|\/)(csv|zip)$/"
                value="#{geoDataBean.file}" mode="simple" onchange="loadCountries();" update="countriesDropdownPanel">
                </p:fileUpload>

如果您需要在客户端访问该文件,您还可以使用以下jquery。这适用于支持输入类型文件的浏览器。

$("input[type=file]").on("change", function() {
        // Do your stuff with this.files
        loadCountries();
});