Css no JSF

71 views
Skip to first unread message

George Queiroz - Triad Systems

unread,
Aug 15, 2007, 3:00:54 PM8/15/07
to Lista JSF
Colegas, como declaro um link pra um css utilizando de algum componente pra
ele resolver a questão do contexto atual que esta rodando?

tks

Rafael Ponte

unread,
Aug 15, 2007, 3:07:53 PM8/15/07
to jav...@googlegroups.com
Se não me engano o Tomahawk já tem um componente para isso, porém nem é necessário, você pode pegar o contexto no jsp mesmo e concatenar no path do css ou javascript.

Rafael Ponte

unread,
Aug 15, 2007, 3:12:52 PM8/15/07
to jav...@googlegroups.com
Eu costumo sempre pegar o contexto e jogar em uma variavel em um jsp(template) que será importado por todos os outros jsps, para que assim possa usar em todos os jsps, algo como:

<c:set var="ctx" value="${ facesContext.externalContext.request.contextPath}" />

Assim você faz:
<link rel="stylesheet" href="${ctx}/pastadentrodoseuprojeto/arquivo.css" type="text/css" />

Abraços.

On 8/15/07, Jullierme Silva Barros <jullie...@gmail.com> wrote:

Assim,


<link rel="stylesheet" href="${facesContext.externalContext.request.contextPath}/pastadentrodoseuprojeto/arquivo.css" type="text/css" />

==================================
                Jullierme Silva Barros                  
              Sistemas de Informação          
        Universidade Estadual de Goiás
                                                                  
              jullie...@gmail.com                
==================================





--
Rafael Ponte

Alessandro Lazarotti

unread,
Aug 15, 2007, 3:44:56 PM8/15/07
to jav...@googlegroups.com
Eu sempre declaro a tag "base" do atributo html (setando com Locator, ou
com facesCotext)...
Assim todos meus links e figuras ficam relativos a ele.

Jullierme Silva Barros escreveu:
> Opa, gostei da idéia Ponte...
>
> Bemmmm melhor
>
>
> Abraço!!!


>
> ==================================
> Jullierme Silva Barros
> Sistemas de Informação
> Universidade Estadual de Goiás
>
> jullie...@gmail.com

> <mailto:jullie...@gmail.com>
> ==================================
> >
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.5.476 / Virus Database: 269.11.19/953 - Release Date: 14/8/2007 17:19

Alessandro Lazarotti

unread,
Aug 15, 2007, 3:54:44 PM8/15/07
to jav...@googlegroups.com
Olá Ponte, este solução que você citou pode não funcionar se o servidor
que hospeda sua aplicação fica por tras de um outro servidor web Apache,
IIS ou qualquer outro que atribui um nome de contexto virtual.

Por exemplo, se o contexto de sua aplicação no servidor javaEE é
"/thisismyapp", e o host é "micro_20" na porta 9090... pegando atributos
do faceContext, você poderia formar:

"http://micro_20:9090/thisismyapp" ....

... porém se você possuir um apache mascarando isso, como
"http://www.myapp.com.br", você vai ter problemas com os contextos
dinamicos.


Rafael Ponte escreveu:


> Eu costumo sempre pegar o contexto e jogar em uma variavel em um
> jsp(template) que será importado por todos os outros jsps, para que
> assim possa usar em todos os jsps, algo como:
>
> <c:set var="ctx" value="${
> facesContext.externalContext.request.contextPath}" />
>
> Assim você faz:
> <link rel="stylesheet" href="${ctx}/pastadentrodoseuprojeto/arquivo.css"
> type="text/css" />
>
> Abraços.
>

> On 8/15/07, *Jullierme Silva Barros* <jullie...@gmail.com

> <mailto:jullie...@gmail.com>> wrote:
>
>
> Assim,
>
>
> <link rel="stylesheet"
> href="${facesContext.externalContext.request.contextPath}/pastadentrodoseuprojeto/arquivo.css"
> type="text/css" />
>
> ==================================
> Jullierme Silva Barros
> Sistemas de Informação
> Universidade Estadual de Goiás
>
> jullie...@gmail.com

> <mailto:jullie...@gmail.com>
> ==================================
>
>
>
>
>
> --
> Rafael Ponte
> >
>

George Queiroz - Triad Systems

unread,
Aug 15, 2007, 3:51:07 PM8/15/07
to jav...@googlegroups.com
isso q ele colocou, eu estou fzdo um listener e colocando no application context e babau, pego de la :))
-----Mensagem original-----
De: jav...@googlegroups.com [mailto:jav...@googlegroups.com]Em nome de Rafael Ponte
Enviada em: quarta-feira, 15 de agosto de 2007 16:13
Para: jav...@googlegroups.com
Assunto: [javasf] Re: Css no JSF

Rafael Ponte

unread,
Aug 15, 2007, 4:34:22 PM8/15/07
to jav...@googlegroups.com
Nunca passei por este problema..
E como você resolve isso?
--
Rafael Ponte

Alessandro Lazarotti

unread,
Aug 16, 2007, 8:52:50 AM8/16/07
to jav...@googlegroups.com
Este problema acontece pq o FaceContext obtem o contexto do *servidor de
aplicação*.

Se no Apache (servidor web) a aplicação ganha um "apelido" (por exemplo
um "www.minhaapp.com"), o browser de seu usuário vai apontar para a CSS
e links relativos ao contexto do servidor de aplicação, e não para o
relativo do apache. Mas como o usuário tem apenas o contexto externo de
acesso ao "www.minhaapp.com" e não o "http://micro_20:8080/myapp",
todos os links vão aparecer quebrados e as imagens e configurações CSS
nao apareceram (afinal de contas o link do usuario vai apontar para
"http://micro_20:8080/myapp/style/mycss.css", que não existe para quem
acessa a aplicação).

Para resolver isso, deve-se criar um arquivo de configuração, pode ser
um propertie ou carregar do banco, um Locator qualquer, que obtenha de
forma "descritiva" a URL final que o usuário deverá acessar. Este
parâmetro, vc pode ler na tag "base" de seu html para deixar todas as
referencias até ali.

Por exemplo;
Vc coloca no .properties.

url.base=http://www.minhaapp.com

Como a tag 'base' não possui sua respectiva em JSF, vc adiciona um
pequeno scriptlet, ou cria um componente:

<html>
<head>
<base href='<%= ServiceLocator.getInstance().getUrlBase()%>' />
<link href="/style/mystyle.css" rel="stylesheet" type="text/css">
<head>

Desta forma todos links e imagens serão relativos ao contexto raiz
localizado, evitando qualquer erro no acesso.

No exemplo localizei em um arquivo propertie, mas pode ser banco de
dados, publicação no JNDI, ou o que quiser.

[]s
Alessandro Lazarotti

Rafael Ponte escreveu:


> Nunca passei por este problema..
> E como você resolve isso?
>

> On 8/15/07, *Alessandro Lazarotti* <aless...@siq.com.br

> > <mailto:jullie...@gmail.com <mailto:jullie...@gmail.com>>>


> wrote:
> >
> >
> > Assim,
> >
> >
> > <link rel="stylesheet"
> >
> href="${facesContext.externalContext.request.contextPath}/pastadentrodoseuprojeto/arquivo.css"
> > type="text/css" />
> >
> > ==================================
> > Jullierme Silva Barros
> > Sistemas de Informação
> > Universidade Estadual de Goiás
> >
> > jullie...@gmail.com
> <mailto:jullie...@gmail.com>

> > <mailto:jullie...@gmail.com <mailto:jullie...@gmail.com>>

Rafael Ponte

unread,
Aug 16, 2007, 8:55:44 AM8/16/07
to jav...@googlegroups.com
Valeu Alessandro, experiência é uma grande ajuda em tanto!
Abraços e obrigado!

On 8/16/07, Jullierme Silva Barros < jullie...@gmail.com> wrote:
Grande Alessandro, eu estou engatinhando ainda com desenvolvimento web e não tinha nem idéia deste grande problema.....

Como sempre, muito boa a solução


Obrigado!

valeu.....

Em 16/08/07, Alessandro Lazarotti <aless...@siq.com.br> escreveu:



--
==================================
                Jullierme Silva Barros                  
              Sistemas de Informação          
        Universidade Estadual de Goiás
                                                                  
              jullie...@gmail.com                 
==================================





--
Rafael Ponte

Alessandro Lazarotti

unread,
Aug 16, 2007, 9:49:07 AM8/16/07
to jav...@googlegroups.com
Parabéns, a idéia é essa...

Jullierme Silva Barros escreveu:
> Perfeito...
>
> configurei no web.xml
>
> <context-param>
> <param-name>urlBase</param-name>
> <param-value>/jb_eduquality/</param-value> <!--Alterar quando
> hospedar a página!-->
> </context-param>
>
>
> E no meu index.xhtml
>
> <base href="#{initParam['urlBase']}"/>
>
>
> E nas páginas que vão estar trabalhando dentro do index
>
> <a4j:loadStyle src="pastacommeuscss/meucss.css"/>
>
> A linha acima gera no browser
>
> /jb_eduquality/pastacommeuscss/meucss.css
>
>
> Abraços


>
>
>
> ==================================
> Jullierme Silva Barros
> Sistemas de Informação
> Universidade Estadual de Goiás
>
> jullie...@gmail.com
> <mailto:jullie...@gmail.com>

> ==================================


> >
>
> ------------------------------------------------------------------------
>
> No virus found in this incoming message.
> Checked by AVG Free Edition.

> Version: 7.5.484 / Virus Database: 269.11.19/956 - Release Date: 16/8/2007 09:48

Glauco Pimentel Gomes

unread,
Aug 16, 2007, 10:44:11 AM8/16/07
to jav...@googlegroups.com
Nas minhas aplicacoes utilizo o seguinte:

<t:stylesheet path="/css/header.css" />

e tem funcionado perfeitamente, mesmo com o apache na frente do tomcat.

Glauco P. Gomes

Jullierme Silva Barros escreveu:
> hehehe valeu, os créditos são seus!!!

Alessandro Lazarotti

unread,
Aug 16, 2007, 11:34:12 AM8/16/07
to jav...@googlegroups.com
Se voce não utiliza FaceContext para determinar o contexto, não terá
problema com os Web Servers.

Eu adotei o que explanei pq precisava de uma referencia unica para todo
o sistema, não apenas para folha de estilo. O problema de contexto
relativo não é somente para CSS, mas é tbm para todos links ou imagens
carregadas diretamente na pagina.

[]s
Alessandro Lazarotti

Glauco Pimentel Gomes escreveu:

Glauco Pimentel Gomes

unread,
Aug 16, 2007, 11:50:33 AM8/16/07
to jav...@googlegroups.com
E eu estava me referindo apenas a CSS, mas para imagens também é
possivel utilizar os componentes do JSF (h:graphicImage) ou utilizar
links relativos.

Glauco P. Gomes

Alessandro Lazarotti escreveu:

Alessandro Lazarotti

unread,
Aug 16, 2007, 1:12:23 PM8/16/07
to jav...@googlegroups.com
Link relativo é possível utilizar desde a versão 1.0 da especificação
JSP, o problema não é esse Glauco... (graphicImage utiliza o mesmo link
relativo que o simples "img", o que não ajuda sem um "base").

Quando vc trabalha com frameworks do tipo Struts ou JSF, a url é
sobreescrita e o contexto "relativo" pode se perder (por isso que o
Struts tinha a tag <html:base>). Por exemplo, muitas vezes algo como
"http://host/myapp/page/negocio/index.jsf" acaba se arrastando depois de
um forward para outra pagina sem que se mude a URL. Se vc possui imagens
de diferentes níveis e faz apenas referencia estatica a ela, você
pode ter problemas.

Se até hoje isso nao aconteceu em projetos que vc trabalha, considere-se
um homem de sorte...


Glauco Pimentel Gomes escreveu:

George Queiroz - Triad Systems

unread,
Aug 16, 2007, 1:09:27 PM8/16/07
to jav...@googlegroups.com
pra resolver esses prob eu sempre fiz outros context dentro do app server.

-----Mensagem original-----
De: jav...@googlegroups.com [mailto:jav...@googlegroups.com]Em nome de

Alessandro Lazarotti
Enviada em: quinta-feira, 16 de agosto de 2007 14:12


Para: jav...@googlegroups.com
Assunto: [javasf] Re: Css no JSF

Link relativo é possível utilizar desde a versão 1.0 da especificação

--

hebert aquino

unread,
Aug 16, 2007, 7:36:40 PM8/16/07
to jav...@googlegroups.com, carreira...@yahoogrupos.com.br
Meus Caros,
Primeiramente gostaria de pedir desculpas por estar invadindo a lista
por esse email Off - Topic sei que o intuito da lista não se destina a
esse fim espero que todos entedam pois ele é meu primo mas estou
escrevendo esta carta para pedir um favor a vocês. Como sabem, o
Mateus Cariri Araripe de Aquino vem passando por um  problema de saúde
e em fevereiro deste ano foi detectado um linfoma  linfoblástico b,
que é um tipo de câncer infantil. Começamos o tratamento em Fortaleza,
ele vinha respondendo muito bem, mas no final de Junho começou a
sentir fortes e intensas dores abdominais, durante mais de trinta dias
 interruptos. Usamos todos os tipos de medicações para conter a dor e
sem  conseguir sucesso, achamos a necessidade de procurar uma nova
opção de  tratamento que tivesse algum diferencial para alcançar a
cura do Mateus.

Depois de fazermos  várias consultas a especialistas em todo o país e
decidimos que a melhor opção  seria fazer o tratamento no Hospital
Boldrini, em Campinas-SP, que é um centro  de referência de câncer
infantil da América Latina. Quando chegamos ao hospital,  foi feito um
estudo minucioso do caso, inclusive uma nova cirurgia de biópsia  dos
gânglios, para que não se tivesse dúvida alguma com relação ao
diagnóstico.  Após várias reuniões a equipe médica optou pelo o uso de
um protocolo de  tratamento diferente do que ele havia usado em
fortaleza, com drogas diferentes  e muito agressivas, para que se
pudesse conseguir a remissão completa do tumor. Hoje, estamos no
quinto dia de tratamento e pela graça de Deus ele está dando sinais de
respostas  positivas a quimioterapia, mas para haver a consolidação do
tratamento é  necessário fazer um transplante de medula óssea. Para
que se realize um  transplante de medula é necessário que haja uma
total compatibilidade tecidual  entre doador e receptor. Caso
contrário, a medula será rejeitada. Esta análise é  realizada em
testes laboratoriais específicos, a partir de amostras de sangue do
doador e receptor, chamados de exames de histocompatibilidade (HLA).
Com base  nas leis de genética, as chances de um indivíduo encontrar
um doador ideal entre  irmãos (mesmo pai e mesma mãe) é de 25% e entre
pessoas desconhecidas é de 1 a  cada 100.000, então eu, Clarissa e o
Gabriel, os mais prováveis doadores,  fizemos o teste do HLA e
infelizmente não fomos compatíveis, por isso, pedimos a  ajuda de
vocês, para que façam o teste de HLA, que é um exame de sangue comum e
 rápido, realizado no hemocentro mais próximo de sua cidade, no caso
de  Fortaleza, no Hemoce, localizado na Av. José Bastos. Chegando lá
vocês devem se  dirigir a recepção principal informando que querem
fazer um HLA para o Mateus  Cariri Araripe de Aquino, que está
internado no hospital Boldrini em  Campinas-SP, esperando um doador.

Havendo a  compatibilidade, desde já, informo que não tem o menor
risco para o doador. A  doação é feita por meio de uma pequena
cirurgia, de aproximadamente 90 minutos,  em que são realizadas
punções nos ossos posteriores da bacia e é aspirada a  medula.
Retira-se um volume de medula do doador de, no máximo, 10%. Esta
retirada não causa qualquer comprometimento à saúde. Dentro de poucas
semanas(  mais ou menos 15 dias), a medula óssea do doador estará
inteiramente recuperada.

Fazendo isso vocês  não só estão ajudando a um amigo, mas também um
pai, uma mãe, uma família e  principalmente a uma criança com muita
força de vontade, coragem e determinação  para vencer essa batalha,
que com ajuda de todo vocês e de Deus tenho certeza  que vamos
conseguir ter um final feliz, e alcançar a cura do Mateus.

Repassem essa  mensagem para os seus amigos e façam esse pedido para
que eles colaborem também,  mobilizem o maior numero de pessoas
possíveis, qualquer dúvida entre em contato  (19) 8107-1619.

E:mail:  chico.n...@hotmail.com

E:mail:  patri...@hotmail.com
--

Agradeço Antecipadamente

Hebert de Aquino Nery

Flickr agora em português. Você clica, todo mundo vê. Saiba mais.

Glauco Pimentel Gomes

unread,
Aug 17, 2007, 9:31:52 AM8/17/07
to jav...@googlegroups.com
Acho que foi questao de coincidencia mesmo, pois todos os projetos que
ficaram por tras do apache tiveram o mesmo contexto tanto no apache
quanto no tomcat, deve ter sido por isso que nao tive problemas (obs.:
nao utilizo links relativos).
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages