Expressao + FacesContext[RESOLVIDO]

4 respostas
furacao123

galera estou tentando atribuir uma imagem a um DataTable, mas estou tendo de juntar…

<h:graphicImage url="${facescontext.currentinstance}/#{nfe.imgStatus}"/>

onde nfe é a variavel do meu dataTable, é um entity que no metodo get faz o seguinte…

@Transactional public String getImgStatus() { switch (this.status) { case APROVADA: return "../../img/aprovada.png"; case CANCELADA: return "../../img/cancelada.png"; default: return ""; } }

mas o problema é que este diretorio nao pode ser fixo, pois esta pagina xhtml é importada em diferentes paginas, fazendo com que o caminho para a imagem mude.

tentei fazer como acima mas me retorna o seguinte erro

javax.servlet.ServletException: /pages/nfe/corpoNFe.xhtml @26,93 url="${facescontext.currentinstance}/#{nfe.imgStatus}" Expression cannot contain both #{..} and ${..} : ${facescontext.currentinstance}/#{nfe.imgStatus} javax.faces.webapp.FacesServlet.service(FacesServlet.java:422) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380) org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169) org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

Como eu posso fazer para que pegue este diretorio dinamico, por exemplo dependendo de qm chama a pagina fica …/img ou …/…/img

4 Respostas

Hebert_Coelho

Na verdade seu erro é outro:

Tenta alterar o segundo para $.

Outra coisa seria, ao invés de fazer ./…/imagem.png ou ./…/…/imagem.png pq vc não coloca o retorno sempre como imagens/imagem.png uma vez que a imagem é a mesma?

A

cara,

faz o seguinte

<h:graphicImage value="#{nfe.imgStatus}"/>
public String getImgStatus() {  
        switch (this.status) {  
            case APROVADA:  
                return "../img/aprovada.png";  
            case CANCELADA:  
                return "../img/cancelada.png";  
            default:  
                return "";  
        }  
    }

aonde a pasta img tem q ta abaixo da pasta WebContent.

t+

furacao123

Valew jakefrog fiz como me falou substitui essa linha

${facescontext.currentinstance}/#{nfe.imgStatus}

ficando

${facescontext.currentinstance}/${nfe.imgStatus}

e pegou o valor correto, mas qual a diferença de ${} e #{} ?

Hebert_Coelho

$ é mais utilizado em JSF e # mais para EL do jsp.

Pelo visto se misturar os dois vai dar zigizira! =D

Criado 31 de outubro de 2011
Ultima resposta 1 de nov. de 2011
Respostas 4
Participantes 3