Boa tarde galera, tdo certo ? Bem, na minha aplicação estou fazendo upload de uma imagem…Daí que estou exibindo em um dataTable o nome da imagem, seu tamanho e estou tentando também colocar a imagem em si…Porém, não estou tendo mto sucesso…Abaixo o código:
Meu xhtml:
<p:dialog id="dlgAnexo" modal="false" widgetVar="dlgUpload" header="Upload de Arquivo"
width="400" height="150" closable="true">
<h:form id="frmDlg" enctype="multipart/form-data">
<p:growl id="mensagemdlg" life="4000"/>
<h4>As extensões permitidas são GIF, JPG com um tamanho máximo de 1.200 Kilobytes (KB)</h4>
<p:fileUpload fileUploadListener="#{escolaJsfBean.handleFileUpload}" mode="advanced"
dragDropSupport="true" fileLimit="1"
sizeLimit="1228800" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
invalidFileMessage="Arquivo não permitido"
fileLimitMessage="Remova a imagem adicionada anteriormente para adicionar a que deseja."
invalidSizeMessage="Tamanho do arquivo inválido" multiple="true"
label="Adicionar Anexo" auto="true" update=":form1:tab:tableAnexo">
</p:fileUpload>
<br/>
</h:form>
</p:dialog>
<fieldset>
<legend>
Anexos do Atendimento
</legend>
<p:commandButton value="Anexar Imagem"
onclick="dlgUpload.show();"
icon="anexo" type="button"/>
<br/>
<br/>
<p:dataTable id="tableAnexo" value="#{escolaJsfBean.anexoList}" var="item"
emptyMessage="Nenhum arquivo anexado ao atendimento.">
<p:column headerText="Nome da Imagem Anexada">
<h:outputText value="#{item.fileName}"/>
</p:column>
<p:column headerText="Tamanho da Imagem Anexada" width="20">
<h:outputText value="#{item.size} Bytes"/>
</p:column>
<p:column headerText="Ação" style="border-left: 0;" width="1">
<p:commandLink title="Remover" update=":form1:tab:tableAnexo :form1:tab:growl2" process="@this"
action="#{escolaJsfBean.excluirAnexo(item)}" onclick="if (confirm('#{msg.confirm_del}') !== true)
return false;">
<p:graphicImage value="/resources/img/icon/trash.gif" styleClass="icone_tabela"/>
</p:commandLink>
</p:column>
</p:dataTable>
</fieldset>
Meu bean:
private List<UploadedFile> anexoList = new ArrayList<UploadedFile>();
private boolean estaNaLista;
public List<UploadedFile> getAnexoList() {
return anexoList;
}
public void setAnexoList(List<UploadedFile> anexoList) {
this.anexoList = anexoList;
}
public boolean isEstaNaLista() {
return estaNaLista;
}
public void setEstaNaLista(boolean estaNaLista) {
this.estaNaLista = estaNaLista;
}
public void handleFileUpload(FileUploadEvent event) {
estaNaLista = false;
List<UploadedFile> lista = anexoList;
Iterator<UploadedFile> it = lista.iterator();
while (it.hasNext()) {
UploadedFile anexo = it.next();
if (anexo.getFileName().toString().equals(event.getFile().getFileName().toString())
&& anexo.getSize() == event.getFile().getSize()) {
// Se o arquivo tem o mesmo nome e o mesmo tamanho, ao igual;
estaNaLista = true;
break;
}
}
if (estaNaLista) {
JsfUtil.warn("Esta imagem já foi anexada.");
} else {
anexoList.add(event.getFile());
JsfUtil.info(event.getFile().getFileName() + " adicionada à lista.");
}
JsfUtil.primeFacesExecute("dlgUpload.hide();");
}
public void excluirAnexo(UploadedFile item) {
Iterator<UploadedFile> it = anexoList.iterator();
while (it.hasNext()) {
UploadedFile imagem = it.next();
if (iamgem.getFileName().toString().equals(item.getFileName().toString())
&& imagem.getSize() == item.getSize()) {
it.remove();
break;
}
}
JsfUtil.info("Imagem removida da lista com sucesso.");
}
O bean está como escopo de Sessão…Estou tentando colocar a imagem da seguinte maneira:
<p:column>
<f:facet name="header">
<h:outputText value="Imagem" />
</f:facet>
<h:graphicImage value="#{item.contents.stream()}" />
</p:column>
Estou pesquisando como fazer e tals, Se alguém puder dar uma ajuda, fico mto agradecido…Vlwww