Pergunta

Eu estou escrevendo minha aplicação baseada primeiro portlet (para liferay, mas a solução deve ser recipiente agnóstico) e eu estou querendo saber como as pessoas a resolver a fornecer links para o usuário que "chumbo" para diferentes portlets (talvez em diferentes "páginas" no portal).

Enquanto você pode facilmente ter diferentes modos de visualização dentro de seu portlet, como você pode conectar-se a outro portlet e (talvez) também passar parâmetros ao longo?

Eu não estou falando sobre comunicação planície entre portlets, é o PageFlow real que me interessa.

Exemplo: Você tem página de A com um portlet que exibe uma lista de itens de notícias. Então você tem página B que está no caminho configurado Eu gostaria de um único a notícia a ser mostrado (por exemplo portlets diferentes em torno dele)

Existe uma solução genérica para link para a página B e dizer para a notícia-Detail-Portlet que ele deve mostrar XYZ produto?

A solução rápida e suja seria para configurar o link de destino por meio do modo de edição da notícia-list-portlet. Mas isso tem várias desvantagens: - portlets complexos podem ter várias URLs de destino que leva a esforços de configuração maciças para o administrador do portal - as urls podem não seguir um esquema que permite a injeção de parâmetro simples

Eu tenho uma solução em mente, mas isso exigiria grandes esforços e talvez mudanças nos portlets-alvo, o que nem sempre é possível se você usar portlets 3rd party.

A minha solução seria algo como isto: (! Projecto)

Portlets registrar em um serviço central com seus IDs de portlets e quando um portlet quer link para um portlet que pode fazer uma pesquisa com base em um nome simbólico. Isso iria aliviar a dor para o administrador, porque é possível "auto descobrir" portlets. O serviço também pode fornecer uma interface de usuário para fio portlets com base em origem e de destino portlet.

A geração URL para portlets que podem haver mudanças podem ser resolvidos através de chamada de serviço para o portlet que gera a URL como um todo com os parâmetros injetados e devolve-lo. Para portlets que você não pode mudar você tem que anexar os parâmetros e espero que ele funciona. : - /

Todas as sugestões? São soluções existem mais simples? soluções existentes?

Obrigado!

Patrick

Foi útil?

Solução

Tanto quanto eu sei Portlet Specification não cobre isso. Portanto, não há solução portátil. Para Liferay você sempre pode usar o deles biblioteca de tag personalizado que visa exatamente esta questão. Há mecanismo semelhante para o WebSphere Portal.

Algo pode ser encontrada aqui e aqui

Geralmente gostaria de tentar evitar isso e usar o mecanismo IPC standard (Public parâmetros de renderização ou eventos)

Outras dicas

Para JSR especificação 286 é possível usar eventos para a comunicação entre portlets. Para o JSR mais velho 168 não é uma forma endossou a fazê-lo. Se você encontrar uma maneira que funciona para você, então usá-lo.

Há um velho livro dado de graça a partir Manning (registro obrigatório). Você pode encontrar algumas idéias lá.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top