Como ler os parametros do web.xml?

19 respostas
R

Como ler os parametros do web.xml se a classe nao for um servlet ? por exemplo.
Eu tenho uma CustomTag que faz o seguinte procedimento:

...
public void doTag() throws JspException, IOException {
	PageContext context = (PageContext)getJspContext();
	path = context.getServletContext().getInitParameter("DOMAIN") + "/" + this.path;
	context.getOut().write(path);
}
...

Agora eu tenho um bean e naum consigo fazer a mesma coisa, como ler os parametros do web.xml atraves de uma classe comum ?

19 Respostas

R

Ou lê o arquivo na ‘unha’ com um parse do xml mesmo, ou recupere um objeto ServletContext.

F

ronildobraga:
Como ler os parametros do web.xml se a classe nao for um servlet ? por exemplo.
Eu tenho uma CustomTag que faz o seguinte procedimento:

...
public void doTag() throws JspException, IOException {
	PageContext context = (PageContext)getJspContext();
	path = context.getServletContext().getInitParameter("DOMAIN") + "/" + this.path;
	context.getOut().write(path);
}
...

Agora eu tenho um bean e naum consigo fazer a mesma coisa, como ler os parametros do web.xml atraves de uma classe comum ?


Classe comum ? No servlets ? No Jsp ? No tag lib ? hunn …
Posso saber pq vc ta querendo ler o xml fora dessas classes ?
Geralmente não tem porque, mas …

R

Gostaria de ler atraves dessa classe ! atraves de um bean… do JSF… saca ?

public class PersonBean {
	
	static private String blank = "";
	static private String success = "success";
	static private String failure = "failure";

	private String name = blank;
	private String login = blank;
	private String password = blank;

        //geters and seters
       ...
	
        //Actions
	public String registerPerson(){
		
		if(true)
			return success;
		else
			return failure;
	}
...

Como fazer isso ? logico que… essa classe é ridicula e naum possui logica de negocio… no problemas real… existe de fato a necessidade de coletar os parametros do web.xml

Obrigado

R

Alimenta as informações do bean então, com um servlet, antes de ele ser solicitado pelo JSF.

R

Hum :? ! nao ficou legal… alimentar as informacoes do bean !? Mas é um bean que monta o menu da pagina ! em todas as paginas do sistema eu teria de ficar alimentando uma variavel do bean do menu
No meu caso… a variavel que quero alimentar é o path para as imagens do menu

A

Pq isso tem que ficar no web.xml. Poe num arquivo de propriedades e le de la. Fica muito mais facil.

Alberto

W

Salve ;
Dê uma olhada nesta solução no blob do Edgar Silva, acho que é o seu caso ok.:

http://www.jroller.com/page/edgar?entry=reading_files_from_web_inf

boa sorte.

R

Porque eu uso em uma CustomTag ae no jsp eu posso fazer isso:

<td background="<s:path/>/images/themes/default/tag_header.gif" ....

Mas agora no bean nao consigo fazer a mesma coisa que fazia na CustomTag

PageContext context = (PageContext)getJspContext();
path = context.getServletContext().getInitParameter("DOMAIN");
F

ronildobraga:
Porque eu uso em uma CustomTag ae no jsp eu posso fazer isso:

<td background="<s:path/>/images/themes/default/tag_header.gif" ....

Mas agora no bean nao consigo fazer a mesma coisa que fazia na CustomTag

PageContext context = (PageContext)getJspContext(); path = context.getServletContext().getInitParameter("DOMAIN");


e pq vc n quer mais usar a tag ?

R

Porque agora estou usando JSF… e esse provavelmente é o unico lugar que eu vou precisar do path das imagens e naum vou poder usar a minha customTag que resolvia o problema do path no jsp ! saca ?

Eu estou em um bean… pra montar o menu dinamico que o MyFaces fornece, esses menus tem imagens… e eu preciso dizer o caminho delas… independente de que pagina o menu esta

por exemplo… eu nao posso fazer isso

NavigationMenuItem agenda = new NavigationMenuItem(" Agenda", "action2", null, false);
    	NavigationMenuItem[] itensAgenda = new NavigationMenuItem[2];
    	itensAgenda[0] = new NavigationMenuItem("Apontamento de horas","usuario", "../images/themes/default/icons/history.png", false);
    	itensAgenda[1] = new NavigationMenuItem("Compromissos","clientes", "../images/themes/default/icons/mail_generic.png", false);
    	agenda.setNavigationMenuItems(itensAgenda);

…/images/thems é uma droga ! porque ae o menu so funciona na pagina home !

portanto eu gostaria de fazer isso:

path = context.getServletContext().getInitParameter("DOMAIN");

itensAgenda[0] = new NavigationMenuItem("Apontamento de horas","usuario", path+"/images/themes/default/icons/history.png", false);

Mas nao posso fazer isso porque o Bean nao possui um context

esse é meu menu ! http://www.guj.com.br/posts/list/31840.java

Porem estou tentando implementar o uso do properties ! descartando a configuracao de parametros no web.xml… porem nao sei como definir o path ! pois nao posso fazer isso:

File file = new File("c:/projetos/icontrol/web/classes/bundle/resources.properties");
Properties props = new Properties();
FileInputStream fis = new FileInputStream(file);
props.load(fis);

Gostaria de algo mais dinamico ! passar o caminho completo de onde estar o arquivo nao vai dar certo :frowning:

F

ouxie, vc quer pegar o nome do path ? só isso ?
ué pega do request, request.getContextPath() (acho q eh isso)

R

ai caramba :shock:
entao… isso funciona no JSP… no servlet… na CustomTag ! certo !?

Mas e no bean ? saca ? vc nao tem o context, request, response !
Vc sabe o que é um bean ? um bean… so com geters and seters e algumas actions
saca ?

F

1º você NÃO deve setar um parametro DOMAIN no web.xml sendo que o container já te fornece isso!

Arranje um jeito de vc passar pro bean, não conheço jsf, mas será que uma FacesServlet não poderia ser utilizada ?

R

Ok… nao vou mais chamar de DOMAIN ! eu mudo o nome… desculpas
Mas entao… parece que naum tem como pegar os parametros do web.xml no bean !?

O bean nao so existe no JSF ! se não me engano vc poderia usar aquela tag useBean do JSP tb
saca? <@useBean alguma coisa…

Bom… mesmo assim… muito obrigado.

F

ronildobraga:
Ok… nao vou mais chamar de DOMAIN ! eu mudo o nome… desculpas

a questao não é o nome, são mais pontos que você está criando pra manutenção.

E javabean pelo q saiba soh deve ter get/sets e construtor vazio …

F

ronildobraga:
Porque agora estou usando JSF… e esse provavelmente é o unico lugar que eu vou precisar do path das imagens e naum vou poder usar a minha customTag que resolvia o problema do path no jsp ! saca ?

Eu estou em um bean… pra montar o menu dinamico que o MyFaces fornece, esses menus tem imagens… e eu preciso dizer o caminho delas… independente de que pagina o menu esta

por exemplo… eu nao posso fazer isso

NavigationMenuItem agenda = new NavigationMenuItem(" Agenda", "action2", null, false);
    	NavigationMenuItem[] itensAgenda = new NavigationMenuItem[2];
    	itensAgenda[0] = new NavigationMenuItem("Apontamento de horas","usuario", "../images/themes/default/icons/history.png", false);
    	itensAgenda[1] = new NavigationMenuItem("Compromissos","clientes", "../images/themes/default/icons/mail_generic.png", false);
    	agenda.setNavigationMenuItems(itensAgenda);

…/images/thems é uma droga ! porque ae o menu so funciona na pagina home !

portanto eu gostaria de fazer isso:

path = context.getServletContext().getInitParameter("DOMAIN");

itensAgenda[0] = new NavigationMenuItem("Apontamento de horas","usuario", path+"/images/themes/default/icons/history.png", false);

Mas nao posso fazer isso porque o Bean nao possui um context

esse é meu menu ! http://www.guj.com.br/posts/list/31840.java

Porem estou tentando implementar o uso do properties ! descartando a configuracao de parametros no web.xml… porem nao sei como definir o path ! pois nao posso fazer isso:

File file = new File("c:/projetos/icontrol/web/classes/bundle/resources.properties");
Properties props = new Properties();
FileInputStream fis = new FileInputStream(file);
props.load(fis);

Gostaria de algo mais dinamico ! passar o caminho completo de onde estar o arquivo nao vai dar certo :(

Tenta aí assim:

FacesContext facesContext = FacesContext.getCurrentInstance();
String path = context.getExternalContext().getRequestContextPath();
R

O que vc acha mais conviniente ? um lugar unico aonde se configura o path das imagens do sistema !
Ou ficar configurando o path em cada pagina ! por exemplo, o meu JSP fica assim:

<td background="<s:path/>/themes/tag_header.gif"

Ah… amanha resolveram mudar o path da imagem… ou mudaram o theme.
Dessa forma eu mudaria so no web.xml… ou que seja… um arquivo properties ou qualquer outra coisa
Mas vc entendeu oque eu queria ? e até tava dando certo… até a hora de eu precisar do path no meu bean

Ah… mas bean so tem geters and seters
Tudo bem… que seja… mas no JSF eles tem alguns recursos a mais
Talvez nao seja um bean… talvez eu tenha cofundido o nome… sei lá
Mas enfim… nao consigo ler os parametros do web.xml fora de servlets e CustomTags :?

R

Puts… me da uma braço :smiley:
Uma luz… ele nao leu os parametros do web.xml
mas ele retornou isso: /icontrol
Que é a raiz da apliacação :slight_smile:

Eu preciso ir pra facu… mas valeu mesmo… vou terminar depois !
Abraços

F

ronildobraga:
Puts… me da uma braço :smiley:
Uma luz… ele nao leu os parametros do web.xml
mas ele retornou isso: /icontrol
Que é a raiz da apliacação :slight_smile:

Eu preciso ir pra facu… mas valeu mesmo… vou terminar depois !
Abraços


hehehe…
blza , olha direito essa classe FacesContext , ela vai te ajudar muito sem vc precisar fazer gambiarras!

Criado 28 de abril de 2006
Ultima resposta 28 de abr. de 2006
Respostas 19
Participantes 5