Olá pessoal,
estou tentando fazer algo bem simples, mas não estou conseguindo. O problema é o seguinte, quando um arquivo for carregado no componente p:fileUpload do primefaces gostaria que o nome do arquivo fosse imediatamente atualizado em um p:outputLabel, pensei em usar uma requisição AJAX para fazer isso, mas quando tento colocar a requisição AJAX ocorre o seguinte erro: /index.xhtml @57,47 <p:ajax> Unable to attach behavior to non-ClientBehaviorHolder parent
Alguém pode me ajudar? Segue o código
Arquivo .xhtml
<p:growl id="message" showDetail="true"/>
<p:fileUpload value="#{indexBean.valorFupload}" mode="advanced" fileLimit="1" update="message" uploadLabel="Upload" label="Adicionar Arquivo" cancelLabel="Cancelar"
allowTypes="/(\.|\/)(docx)$/" fileUploadListener="#{indexBean.arquivoCarregado}"
auto="true"
invalidFileMessage="São permitidos apenas arquivo no formato .DOCX"
fileLimitMessage="Só é permitido carregar 1(um) arquivo." >
<p:ajax event="change" update="addArquivo"/>
</p:fileUpload>
<h:panelGrid columns="2">
Arquivo:
<p:outputLabel id="addArquivo" value="#{indexBean.enderecoFalha}"/>
</h:panelGrid>
Arquivo Bean:
private String enderecoFalha;
private String valorFupload;
public void arquivoCarregado(FileUploadEvent event) {
try {
UploadedFile arq = event.getFile();
File file = new File(arq.getFileName());
this.enderecoFalha = file.getAbsolutePath();
} catch (Exception e) {
// TODO: handle exception
}
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Upload", "O arquivo: "+event.getFile().getFileName()+" foi carregado com sucesso.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
public String getValorFupload() {
return valorFupload;
}
public void setValorFupload(String valorFupload) {
this.valorFupload = valorFupload;
}
public String getEnderecoFalha() {
return enderecoFalha;
}
public void setEnderecoFalha(String enderecoFalha) {
this.enderecoFalha = enderecoFalha;
}
Agradeço pela ajuda!!!