URL da Interface
Quando uma interface de serviço está gerando seu conteúdo, que será retornado para o navegador cliente em uma página, às vezes, ela precisa gerar um link para uma outra página do portal ou ela pode gerar, ainda, um formulário cujos dados deverão ser submetidos de volta para serem processados. Nestas situações, o destino da navegação será uma página do portal. Neste caso, é necessário que o framework calcule URLs para o portal, quando necessário.
Se uma interface precisa gerar link para uma outra interface, é necessário saber em qual página a outra interface está. Para isso, a interface do serviço deve requisitar URLs do framework .
A interface Java IServiceInterfaceUrl
resolve o problema do cálculo de URLs. Interfaces de serviços que precisam de URLs do portal, podem obter uma implementação de IServiceInterfaceUrl
no objeto response
. É preciso especificar se a URL é para uma chamada de renderização (através do método render
) ou para processar uma ação (através do método processAction
).
A interface Java IServiceInterfaceUrl
possui métodos para adicionar parâmetros, especificar o destino do link, etc. Por fim, há o método toString()
que retorna a URL do portal solicitada.
Exemplo de interface de serviço que usa IServiceInterfaceUrl
:
No exemplo acima, a interface do serviço implementa tanto o método render
quanto o processAction
, para renderizar e processar a página, respectivamente.
Na etapa de renderização é criado via código um HTML contendo um <form>
e dois controles: um <input type="text">
e um <input type="submit">
. O atributo action do formulário será gerado utilizando o método serviceInterfaceUrl.toString()
. Caso haja um parâmetro de renderização chamado comment, ele será impresso nesta etapa. Na primeira apresentação da interface, este parâmetro não existe, pois será definido na etapa de process action .
O usuário visualiza o formulário no browser e preenche um nome na caixa de texto. Ao clicar no botão, o formulário é submetido de volta ao Portal Server, que detecta a ação do usuário e dispara o process action. Nele é verificado se foi recebido o parâmetro name, preenchido pelo usuário no formulário. Caso este parâmetro exista, o process action define um parâmetro de renderização ( render parameter ) chamado comment contendo uma mensagem. Assim, termina o process action e começa novamente a etapa de renderização, onde, desta vez, é detectado o valor do parâmetro comment e este é renderizado na interface.