在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。
答案 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();
});