quarta-feira, 23 de dezembro de 2015

Links para páginas Visualforce em pacote gerenciado

Hoje recebi de um dos nossos analistas de teste, um bug relacionado ao link para uma página visualforce. A demanda que levou a esse bug se resume em criar um link para uma página visualforce customizada e postar esse link no Chatter. Realizei o respectivo trabalho e testei. Estava tudo ok. Porém, após essa funcionalidade ser empacotada e enviada para a Org de testes, esse link para a página visualforce, quando postada no Chatter do Salesforce, parou de funcionar.

Na versão inicial, antes do bug ser percebido, eu utilizava o seguinte código para gerar o link:
 String url = System.Url.getSalesforceBaseURL().toExternalForm();  
Ou: 
 String url = System.Url.getSalesforceBaseUrl().getHost();  
Porém, após o bug ser percebido, acessei a Org em que o pacote gerenciado foi implantado. Em seguida fui à listagem de páginas Visualforce do Salesforce, acessei a página, em que o link apresentava problema. Ao clicar em "Preview" para a página ser carregada no meu navegador, vi que o link era diferente do que eu gerava com os código acima descritos. O link gerado com os códigos acima eram:
 https://na16.salesforce.com/apex/MinhaPaginaVisualForce  
Já o link que o Salesforce me gerava, na Org com o pacote gerenciado era:

 https://MeuNamespace.na16.visual.force.com/apex/MinhaPaginaVisualForce  
Veja que no segundo caso há o namespace do pacote gerenciado no link. 

Diante disso, pesquisei algumas soluções para o problema com o namespace, e descobri que se eu usar o mesmo código que usei inicialmente para gerar a URL, concatenar com o namespace da Org do pacote gerenciado, concatenar com o underline (2x) e por fim concatenar com o nome da página, obteria exito. Dessa forma fiz:
 String url = System.Url.getSalesforceBaseURL().toExternalForm();  
 String complemento = '/apex/' + 'MeuNamespace__' + 'MinhaPaginaVisualForce';  
 String urlFinal = url + complemento;  
A variável urlFinal gerou o link:
 https://na16.salesforce.com/apex/MeuNamespace__MinhaPaginaVisualForce   
Ao acessar o link supracitado, sou redirecionado para o link real:
 https://MeuNamespace.na16.visual.force.com/apex/MinhaPaginaVisualForce  

Bem, por hoje é só! Abraços.

Nenhum comentário: