Estou migrando um projeto para jee7 de Primefaces 3.5 para 5.0 e estou com um problema no fileupload. Não carrega o arquivo no listener do evento do JSF 2.2. segue a tela
Codigo html
<p:fileUpload id="import" value="#{fileBean.file}" mode="single"
label="#{msg.procurar}"
auto="true" fileUploadListener="#{fileBean.handleFileUpload}"
invalidFileMessage="#{msg.somente_excel}"
allowTypes="/(\.|\/)(xls|xlsx)$/" />
segue agora o Codigo do bean
:
public void gethandleFileUpload(FileUploadEvent event) throws IOException {
this.uploadedFile = event.getFile();
}
alguém tem ideia do porquê o evento não estar sendo disparado?
vc está acessando o metodo get e não um listner.
tente mudar o nome do metodo de
gethandleFileUpload(FileUploadEvent event)
para
handleFileUpload(FileUploadEvent event)
no seu Bean.
Além disso , quando for criar um método get, utilize as recomendações do java de CamelCase
getHandleFileUpload()
Veja se resolveu.
mudei , mas não resolveu não. fiz um update do sistema paara jsf 2.2 e o listener não está sendo chamado e por isso ao selecionar o arquivo ele não é carregado.Teria outra ideia?
Poderia ser outro problema?
Outro listener funciona ou nenhum funciona… tente de outro componente para ver.
a documentação não sita o listener mas trabalha com o actionListener não é exatamente como vc quer fazer… mas deve funcionar
//xhtml
<h:form enctype=“multipart/form-data”>
<p:growl id=“messages” showDetail=“true” />
<p:fileUpload value="#{fileUploadView.file}" mode="simple" skinSimple="true"/>
<p:commandButton value="Submit" ajax="false" actionListener="#{fileUploadView.upload}" disabled="true" />
</h:form>
//Bean
public class FileUploadView {
private UploadedFile file;
public UploadedFile getFile() {
return file;
}
public void setFile(UploadedFile file) {
this.file = file;
}
public void upload() {
if(file != null) {
FacesMessage message = new FacesMessage("Succesful", file.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
Com este código não apareceu o commandbutton . dá uma olhada só. https://snag.gy/2cxBQq.jpg neste link
Lembro que estou utilizando primefaces 5 e jsf 2.2 isto faz diferença correto?