GraphicImage - Error Rendering View

52 views
Skip to first unread message

hvivox software

unread,
Aug 9, 2016, 1:51:12 PM8/9/16
to jav...@googlegroups.com
Olá pessoal!!
estou chamado um metodo do p:graphicImage dessa forma
        <p:graphicImage
            id="imgExibir"
            value="#{mbGerImagem.realizouUpload ? mbGerImagem.imagem01 : mbGerImagem.imagem02}"
            cache="false"
            />

mas ao é mostrado este erro:
 Ago 09, 2016 1:31:08 PM com.br.painelmobile.util.managerbean.listener.OuvinteFases afterPhase
Informações: INVOKE_APPLICATION 5 ENCERROU
Ago 09, 2016 1:31:08 PM com.br.painelmobile.util.managerbean.listener.OuvinteFases beforePhase
Informações: RENDER_RESPONSE 6 INICIOU
Ago 09, 2016 1:31:09 PM com.sun.faces.application.view.FaceletViewHandlingStrategy handleRenderException
Grave: Error Rendering View[/main/evento/cadastro-evento.xhtml]
java.io.IOException: java.lang.NullPointerException
    at org.primefaces.component.graphicimage.GraphicImageRenderer.encodeEnd(GraphicImageRenderer.java:43)
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859)
    CONTINUA....

 O valor retornado não é nulo, além disso há uma maquina que funciona normalmente e outra maquina que dá este erro

O erro é mostrado ao rodar a URL


att.

Nilson Uehara

unread,
Aug 9, 2016, 2:06:30 PM8/9/16
to Grupo JSF
Posta o código do managedbean pra gente ver.

--
Você recebeu essa mensagem porque está inscrito no grupo "javasf: JavaServer Faces Group" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para javasf+unsubscribe@googlegroups.com.
Acesse esse grupo em https://groups.google.com/group/javasf.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/javasf/CAB%2BSber1BwdRXZ-ZGSHLv%3Db41vZim7p2A1Mfg3Kpx533jXSoMA%40mail.gmail.com.
Para mais opções, acesse https://groups.google.com/d/optout.

hvivox software

unread,
Aug 9, 2016, 2:27:09 PM8/9/16
to jav...@googlegroups.com
Olá Nilson,
segue a view e mbBean de sessão, há um viewscoped no meio mas ele não influencia nessa lógica. Muito estranho que em uma maquina funciona e outra não



        <p:graphicImage
            id="imgExibir"
            value="#{mbGerImagem.realizouUpload ? mbGerImagem.imagemMemoria : mbGerImagem.imagem}"
            cache="false"
            title="#{mbEventoCadastro.evento.descricao}"
            alt="#{mbEventoCadastro.evento.descricao}"
            width="300"
            height="200" />


ManagerBean
package com.br.painelmobile.controle.mb;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.Serializable;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.faces.application.FacesMessage;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.apache.commons.io.FilenameUtils;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

import com.br.painelmobile.modelo.persistencia.entidade.enums.EstatusEntidadeEnum;
import com.br.painelmobile.modelo.persistencia.entidade.mapeadas.Evento;
import com.br.painelmobile.util.managerbean.diversos.FacesUtil;
import com.br.painelmobile.util.manipularDados.ConversorData;

@Named("mbEventoCadastro")
@ViewScoped
public class MBEventoCadastro implements Serializable {

    private static final long serialVersionUID = 1L;
    // ha uma conf. no tomcat que diz que este link ira redirecionar para caminho fisico
    private static final String linkRedirecionaCaminhoFisicoImagemEvento = "/webservice/evento/imagem";

    @Inject
    private MBGerImagem mbGerimagem;
    private UploadedFile uploadFile;

    private Evento evento = new Evento(
            0,
            ConversorData.converteEmCalendar(21, 02, 1986),
            "http://danceconceptbrasil.com.br/wp-content/uploads/2015/06/palestrantes-para-seu-evento-600x369.jpg",
            "Evento realizado no balneario", EstatusEntidadeEnum.ATIVO);


    public MBEventoCadastro() {
        System.out.println("InstanciaMBEvento............................");
    }


    public void inicializar() {
        if (FacesUtil.isNotPostBack()) {
            System.out.println("isNotPostback ID é: " + evento.getId());
            // envia para o bean o caminho fisico das imagems e o ID da entidad
            mbGerimagem.parametrizarGerenciador(evento.getId(),
                    linkRedirecionaCaminhoFisicoImagemEvento, evento.getNomeImagem());
            evento.setDescricao("descrição para visualização da imagem");
        }

        System.out.println("Inicializa..........");
    }


    /** REALIZA O UPLOAD DO ARQUIVO E CARREGA EM UMA VARIÁVEL
     * @param event evento para manusear o arquivo enviado ao servidor */
    public void uploadImagem(FileUploadEvent event) {

        // obtem uma streaming da imagem
        uploadFile = event.getFile();// converte a imagem para o tipo uploadFile

        // envia a imagem para um MB @sessionScoped, pois o GraphicImage não
        // funciona com o @ViewScoped para mostrar a tela
        mbGerimagem.setFile(uploadFile);

        // envia mensagem de sucesso
        FacesUtil.addMessage(FacesMessage.SEVERITY_INFO, "Imagem: " + uploadFile.getFileName()
                + " enviada com sucesso.");
    }


    public void salvar() throws IOException {

        // verifica que uploadfile é nulo
        if (!(uploadFile instanceof Object)) {
            // envia mensagem de sucesso
            FacesUtil.addMessage(FacesMessage.SEVERITY_INFO,
                    "É necessário selecionar uma imagem válida antes da salvar");
        }
        else {
            Path folder = Paths.get("C:/Tomcat 8.0/painelmobile/eventoImagem");
            String filename = FilenameUtils.getBaseName(uploadFile.getFileName());
            String extension = FilenameUtils.getExtension(uploadFile.getFileName());
            Path file = Files.createTempFile(folder, filename + "-", "." + extension);

            System.out.println("CAMINHO DO ARQUIVO SALVA: " + file.toString());
            System.out.println("P.toUi"+ folder.toUri());
            System.out.println("P.toUi"+ folder.toAbsolutePath());
            System.out.println("P.toUi"+ folder.getFileName());
           
            criaArquivo(uploadFile.getContents(), file.toString());

            // converte
            /* System.out.println(uploadFile.getInputstream() + " $$%%%%%%%%%%%%%#############");
             *
             * try (InputStream input = uploadFile.getInputstream()) { Files.copy(input, file); }
             *
             * System.out.println("Uploaded uploadFile successfully saved in " + file); */

        }

    }


    public void criaArquivo(byte[] bytes, String arquivo) {
        FileOutputStream fos;
        try {
            fos = new FileOutputStream(arquivo);
            fos.write(bytes);
            fos.close();
        } catch (FileNotFoundException ex) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, null, ex);
        }
    }


    public void deletarArquivo() {
        String nome = "C:/pasta_de_teste/teste.html";
        File file = new File(nome);
        file.delete();
    }


    public Evento getEvento() {
        return evento;
    }


    public void setEvento(Evento evento) {
        this.evento = evento;
    }
   
   
    private boolean apertou=false;


    public boolean isApertou() {
        return apertou;
    }


    public void setApertou(boolean apertou) {
        this.apertou = apertou;
    }
   
       
   
   
   
}



Em 9 de agosto de 2016 14:06, Nilson Uehara <nilu...@gmail.com> escreveu:
Posta o código do managedbean pra gente ver.

hvivox software

unread,
Aug 9, 2016, 2:43:07 PM8/9/16
to jav...@googlegroups.com
bem... retirei a EL do graphicImagem e apliquei a condição direto no codigo fonte e funcionou
value="#{mbGerImagem.realizouUpload ? mbGerImagem.imagemMemoria : mbGerImagem.imagem}"


alterei para:
    public StreamedContent getTeste() {

        if(isRealizouUpload()){
            return getImagemMemoria();
           
        }
        else{
            return getImagem();
        }
Muito estranho, testei essa expressão EL termaria no com p:inputText e deu certo


Tag Lig da View
<html
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:pt="http://xmlns.jcp.org/jsf/passthrough"
    xmlns:o="http://omnifaces.org/ui">




Em 9 de agosto de 2016 14:06, Nilson Uehara <nilu...@gmail.com> escreveu:
Posta o código do managedbean pra gente ver.
Reply all
Reply to author
Forward
0 new messages