JSF > como converter um array de byte em imagem e em qual conponente JSF apresentar?

nao consigo viver ser esse forum rss

boa a tarde a todos!!

segui um tutorial e cheguei ate aqui, agoro como apresentar esse objeto Image na pagina jsf??

    public Image getImageJPEG() throws IOException {
        ByteArrayInputStream bin = new ByteArrayInputStream(getImovelImagem().getImagem());
        JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(bin);
        BufferedImage img = decoder.decodeAsBufferedImage();
        ImageIcon icon = new ImageIcon(img);
        return icon.getImage();
    }

outra coisa, nem sei se esse é o jeito certo de fazer…

Transforme esse Image em um arquivo e armazene um em local p/ o qual haja uma URL válida. A maneira mais eficiente, provavelmente, será usar uma Servlet p/ faze-lo. Use um padrão de URL próprio p/ esse tipo de imagem gerada pelo seu aplicativo o armazene em algum escopo comum com o ServletContext. Quando o browser requisitar a imagem a Servlet deve proceder obtendo esse objeto do ServletContext e serializando ele p/ a streaming de output da Servlet.

então seria mais eficiente ao inves de gravar a imagem em um blob salvar ela em algum diretorio e gravar apenas a url da imagem no banco??

Depende se vc quer armazenar essa imagem ou apenas prove-la p/ uma página. Sem falar em se as suas regras de segurança permitem q qualquer usuário possa acessar essas imagens ou se vc deve restringir esse acesso à algum usuário específico (tipo o usuário q a criou).

Agora BLOB e salvar em diretório são coisas distintas. Ou vc vai por um lado ou pelo outro.

então cara, é o seguinte, a minha ideia inicial é essa…

o usuario faz o upload das imagens, ao clicar no botão adicionar imagem, eu gostaria de carregar essa imagem em um DataTable com ajax, mas nao consegui pois o objeto UploadedFile sempre vinha null, ai deixei fazendo postback mesmo, só que preciso mostras na tela as imagens que o usuario foi adicionando… entendeu…

essas imagens eu gostaria que no final ele gravasse elas em um banco em um campo blob…

Se vai usar um BLOB ao invés de um diretório de imagens p/ armazenar essas imagens de qualquer forma, então a Servlet é uma solução bem viável.

bom vou estudar como vou fazer isso, ate porq é mais dificil do q eu esperava que fosse rss

só mais uma coisa cara!! se puder ajudar agradeço…

fiz a autenticacao com jaas, as paginas privadas estao mapeadas conforme abaixo, o problema é que jsf sempre esta uma url atras ai preciso clicar 2 vzs no botao para pedir autenticacao, como corrigir isso?

<security-constraint>
        <display-name>Cliente Autenticado</display-name>
        <web-resource-collection>
            <web-resource-name>Cliente Autenticado</web-resource-name>
            <description>Cliente Autenticado</description>
            <url-pattern>/faces/privado/*</url-pattern>
            <url-pattern>/privado/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>ROLE_CLIENTE</role-name>
        </auth-constraint>
    </security-constraint>

Ñ existe uma solução absoluta p/ o problema do atrazo das URLs do JSF. O q vc pode fazer é quando vc for criar um link q navega de uma página publica p/ uma privada e vice-versa, use requisições GET. Vc consegue isso usando os componentes <h:link> e <h:button> no JSF 2 e <h:outputLink> (embora um pouco menos sofisticado) no JSF 1.x.

Quanto a solução da Servlet imagens, ela é, na verdade, bem simples e diréta. Eu estou meio ocupado agora mas vou ver se implemento ela em casa e depois posto o código.

blz vou tentar as requisições GET.

desde ja agradeço cara, e se tiver um tempo e conseguir fazer o codigo da servilet vou ficar muito agradecido rs, mas de qualquer forma, ja valew pelas dica e ajudas!!

abraço mano!! vou pra facu agora !!