Atualização AJAX do componente p:fileUpload do PRIMEFACES

0 respostas
filejsfajaxprimefacesjava
M

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!!!

Criado 22 de agosto de 2017
Respostas 0
Participantes 1