P:输入流中未显示图形图像

时间:2013-12-16 23:22:37

标签: java jsf primefaces inputstream graphicimage

我试图解决这个问题好几天但它没有用......我有这个代码

 <div id="banner-principal">  
                <div id="largura_paginacao"><div id="paginacao"></div></div>
                <div class="cycle">
                    <ui:repeat value="#{servicosController.fazBuscaServicosHome()}" var="servico">
                        <div class="banner">
                            <p:commandLink actionListener="#{servicosController.abreAnuncio(servico.codServico)}">
                                <p:graphicImage value="#{servicoImagemController.imagem}" url="teste"/>
                                <img src="../imgs/exemplo-banner.jpg" />
                                <div class="descricao-banner">
                                    <div class="valor">
                                        <h:outputText value="#{servico.valor}">
                                            <f:convertNumber  minFractionDigits="2" currencySymbol="R$" type="currency"/>
                                        </h:outputText>&nbsp;&nbsp;
                                    </div>
                                    <div class="titulo">#{servico.titulo}</div>
                                    <div class="infos">Anunciante: #{servico.descricaoAnunciante}</div>
                                </div>
                            </p:commandLink>
                        </div>
                    </ui:repeat>
                </div>    
            </div>

这是我的托管bean:

    @ManagedBean
    @ApplicationScoped
public class ServicoImagemController {
    private StreamedContent imagem;


    @PostConstruct
    public StreamedContent getImagemPrincipal(int codServico){
        System.out.println("here camila");

        FacesContext context = FacesContext.getCurrentInstance();

        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            // So, we're rendering the view. Return a stub StreamedContent so that it will generate right URL.
            return new DefaultStreamedContent();
        }
        else {
            InputStream imagem = buscaImagensServico(codServico).get(0).getImagem();
            return new DefaultStreamedContent(imagem);
        }

    }

    public List<ServicosImagemModel> buscaImagensServico(int codServico){
        List<ServicosImagemModel> imagens = null;

        try {

            String meusParametros = FacesContext.getCurrentInstance().getExternalContext().getInitParameter("ArquivoDeParametros");

            Parametros.getInstance().carregaParametros(meusParametros);

            Localizador<ServicosImagemModel> l = new Localizador<ServicosImagemModel>(ServicosImagemModel.class);

            Integer parametros[] = {codServico};

            imagens = l.localiza("codServico = ?", parametros);

        } catch (FevasDBException ex) {
            Logger.getLogger(ServicoImagemController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return imagens;
    }

    /**
     * @return the imagem
     */
    public StreamedContent getImagem() {
        imagem = getImagemPrincipal(28);
        return imagem;
    }

    /**
     * @param imagem the imagem to set
     */
    public void setImagem(StreamedContent imagem) {
        this.imagem = imagem;
    }

}

发生了什么事实显然,void getImagem()没有被调用..但我不知道为什么因为我的托管bean似乎没问题。

如果有人能帮助我,我会很感激!

谢谢!

0 个答案:

没有答案