A minha dúvida é como identificar na controller do VRaptor qual é o site que está sendo acessado para que eu possa indicar qual é o comportamento para aquele site.
alguém têm alguma luz ai?
você pode fazer um verificação na String da url passada. Se ela contiver o valor desejado você manda para o local desejado.
C
cbragato
surfzera:
você pode fazer um verificação na String da url passada. Se ela contiver o valor desejado você manda para o local desejado.
Legal, mas qual é o código fonte para isso? Esta String deve ter um nome padrão… Como eu capturo ela na controller? O VRaptor têm algum objeto que me forneça esta string?
Desculpe, mas não é isso que eu estou perguntando. Vou tentar ser mais claro. Estou fazendo um site para três ou mais empresas diferentes. A mecânica geral do site (obtenção e manutenção dos dados) é genérica, ou seja, têm o mesmo motor. Mas quando o usuário digitar no browser www.site1.com.br este motor deve retornar para o usuário um designe de site (as informações pertinentes a este site), quando o usuário digitar no browser www.site2.com.br este motor deve retornar outro designe (com as informações pertinentes à ele). Mas para isso acontecer eu tenho que ter uma forma de identificar qual foi a url que o usuário digitou no browser e assim adaptar o funcionamento do mesmo. Entendeu agora? O que eu preciso saber é justamente isso: como identificar na controller do VRaptor qual foi a URL que o usuário acessou.
L
lucasmazza
É possível injetar o HttpServletRequest via construtor da Controller e recuperar a URL (getRequestUrl()) e identificar qual a empresa.
L
Lucas_Cavalcanti
getRequestURL não vai funcionar, pq ele só retorna o que vem depois do nome do servidor…
tem um request.getRemoteHost(), getRemoteAddr() que te retorna o host… possivelmente tenha algum Header tb…
se você tiver um servidor Httpd na frente da sua aplicação, vc pode configurá-lo pra apontar para contextos diferentes da
sua aplicação, ou pra setar headers a mais que te ajudam a identificar de onde veio…
C
cbragato
lucascs:
getRequestURL não vai funcionar, pq ele só retorna o que vem depois do nome do servidor…
tem um request.getRemoteHost(), getRemoteAddr() que te retorna o host… possivelmente tenha algum Header tb…
se você tiver um servidor Httpd na frente da sua aplicação, vc pode configurá-lo pra apontar para contextos diferentes da
sua aplicação, ou pra setar headers a mais que te ajudam a identificar de onde veio…
Vou tentar com getRemoteHost()/Addr() e vou também verificar como trabalhar com headers para contextos diferentes. As vezes é complicado ser genérico. Este esforço todo é porque identifiquei funcionalidades que são comuns à vários sites e o que muda é o designe para cada um. Obrigado pela força. Tendo uma solução viável eu posto aqui. Grato por Hora.
C
cbragato
Galera depois das dicas que vocês deram achei algo que resolveu completamente o meu problema. o trecho de codigo abaixo ilustra como fazer
Esta é a minha controller:
@ResourcepublicclassMainController{privateResultresult;privateSessionModelusuarioInfo;privateHttpServletRequestrequest;publicMainController(Resultresult,SessionModelusuarioInfo,HttpServletRequestrequest){this.result=result;this.usuarioInfo=usuarioInfo;this.request=request;}/** * Reinderiza Página Principal */@Get@Path("/")publicvoidindex(Stringmotivo,Stringhelp){result.include("host",this.request.getRequestURL());}}
Notem que na linha 06 eu crio uma instância privada de HttpServletRequest. Recebo ela através do construtor e guardo (linhas 08 e 11) . E depois é só utilizar o método getRequestURL(). Os metodos getRemote… fazem referência a quem chamou a url (REMOTE). Há também o getRequestURI que retorna apenas a parte do endereço após o host.
Valeu pelas dicas. Assim fica mais fácil encontrar. Principalmente para quem não têm referências.
G
garcia-jj
Não. requestURI retorna apenas o que vem depois do host, no caso context + arquivo.
requestURL retorna o protocolo, nome do host, porta (se não 80) + o URI.
cbragato, você pode usar request.getHeader(“host”) ou então fazer um substring entre request.getRequestURI e request.getRequestURL.
L
Lucas_Cavalcanti
@garcia
esqueci que tem getRequestURI e getRequestURL e eles são diferentes… falei besteira