Artigo Java Magazine 26 - Portlets na Prática, Parte 2

Artigo publicado pela Java Magazine edição 26.

Esse artigo faz parte da revista Java Magazine edição 26. Clique aqui para ler todos os artigos desta edição

Clique aqui para ler essa revista em PDF.

Portlets na Prática

Parte 2: Personalização, Sessões e Segurança

 

Nesta continuação da série sobre Portlets, aprenda a usar técnicas mais avançadas, e torna seus portlets mais seguros, interativos e personalizáveis

 

No primeiro artigo desta série, foi apresentada uma introdução sobre a especificação de Portlets (JSR-168) e o ciclo de vida básico de um portlet. Neste artigo serão mostrados conceitos avançados, como personalização, configurações de segurança e o uso de sessões.

porem com layouts e cores completamente

diferentes.

 

Personalização

Um dos grandes diferenciais dos portais é a sua capacidade de personalização pelos usuários, que é feita em dois níveis básicos.

O primeiro nível se refere a peronalizações do portal como um todo; por exemplo, a definição do número de páginas e dos portlets que devem estar em cada página, esquemas de cores, estilo das páginas e outras opções gerais.

O segundo nível é interno a cada portlet. São personalizações definidas pelo desenvolvedor e geralmente acessíveis no modo de edição do portlet, controladas pelo portlet de forma independente do portal onde está sendo executado.

Para ilustrar a diferença entre esses niveis, considere a Figura 1, que ilustra a aparência do portal para dois usuários diferentes ambos estão visualizando os dois prtlets de exemplo deste artigo, porém com layouts e cores completamente diferentes.

Isso nos leva a uma prática importante: devemos disponibilizar personalizações apenas de conteúdo ou de comportamento do portlet, e evitar a criação de personalizações que fazem mais sentido para o portal como um todo. Por exemplo, para o portlet de lista de CDs mostrado, o usuário pode escolher as colunas de informação que quer visualizar, e também se um clique no título das colunas deve mudar a ordenação – ambas são personalizações do portlet.

 

 

 

 Figura 1. O portal na visão do usuário padrão do uPOrtal, “demo” (à esq.) e “student”

 

Entretanto, note que são usadas cores diferentes para linhas pares e impares na listagem. Essas cores são uma definição geral do portal: quando o usuário mudar o esquema de cores, a aparência dos portlets irá refletir a alteração automaticamente; isso não aconteceria, é claro, se as cores fossem definidas internamente nos portlets.

A forma como é feito o gerenciamento de preferências no nível de portal é específica a cada produto. Já a definição e a manipulação de preferências em nível de portlets seguem um procedimento padrão definido pela especificação, o que garante a interoperabilidade entre portais. Os seguintes passos demonstram esse processo:

 

1. Definir as preferências no arquivo portlet.xml

O conjunto de preferências de um portlet é definido no arquivo portlet.xml (Listagem 1),

através da tag , que fica dentro da tag . Cada preferência é definida numa tag <preference>, cujas “subtags” e especificam o nome da preferência e o seu valor default. Todas as preferências de portlets devem ser do tipo String.

Para o portlet de lista de CDs, são definidas as preferências Título, Artista, Preco e Ordenavel, que indicam quais colunas devem estar visíveis e se a tabela é ordenável ou não.

 

Listagem 1. portlet.xml: arquivo de configuração completo para os dois portlets

<?xml version-“1.0” encoding=”UTF-8”?>

<portlet-app id-“loja” version-“1.0”>

<portlet id-“ListaProdutosPortlet”>

<portlet-name>ListaProdutosPortlet</portlet-name>

<portlet-class>jm.portlet.ListaProdutosPortlet</portlet-class>

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

<portlet-mode>EDIT</portlet-mode>

<portlet-mode>HELP</portlet-mode>

</supports>

<resource-bundle>jm.portlet.ListPortletResources</resource-bundle>

<portlet-preferences>

<preference>

<name>Titulo</name>

<value>true</value>

</preference>

<preference>

<name>Artista</name>

<value>true</value>

</preference>

<preference>

<name>Preco</name>

<value>true</value>

</ preference>

<preference>

<name>Ordenavel</name>

<value>true</value>

</preference>

<preferences-validator>

jm.portlet.ListaPreferencesValidator</preferences-validator>

</portlet-preferences>

</portlet>

<portlet id-“CarrinhoPortlet”>

<portlet-name>CarrinhoPortlet</portlet-name>

<display-name>Carrinho de Compras</display-name>

<description>Carrinho de Compras</description>

<portlet-class>jm.portlet.CarrinhoPortlet</portlet-cla5S>

<expiration-cache>0</expiration-cache>

<supports>

<mime-type>text/html</mime-type>

<portlet-mode>VIEW</portlet-mode>

</supports>

<resource-bundle>jm.portlet.CarrinhoPortletResources</resource-bundle>

<security-role-ref>

<role-name>customer</role-name>

<role-link>user</role-link>

</security-role-ref>

</portlet>

   <user-attribute>

<name>user.home-info.online.email</name>

   </user-attribute>" [...] continue lendo...

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados