A figura abaixo apresenta o Menu Principal do Projeto de Interface Padrão que é configurado conforme código especificado pelo arquivo menu.jsp.


Framework Struts depende de um arquivo de configuração especificado por struts-config.xml. Este arquivo estabelece as configurações que a ActionServlet necessita para atender às solicitações feitas pela aplicação. Quando o item de menu Livro (em Cadastro Simples) é acessado uma solicitação da aplicação é estabelecida com o caminho: /livro/cadastro.do?actionType=criar. No struts-config.xml o path /livro/cadastro (o sufixo '.do' é desconsiderado pelo Struts e configurado no web.xml para o servletdo struts) está vinculado à classe gov.tjpr.inteface.client.livro.action.CadastroAction e ao actionType=criar (em menu.jsp) estabelece que a ação a ser executada está definida na operação ou método criar da classe CadastroAction, conforme o código dispónível aqui.

Outro mecanismo estabelecido (considerando o framework de desenvolvimento atualmente em utilização) para facilitar o controle entre as camadas do padrão MVC é a implementação da Interface ConstantsForward.java nas Actions. Esta interface especifica um conjunto de 'constantes' que estabelecem os rótulos ou nomes necessários para prover a comunicação entre a camada client e action. Essa comunicação entre camadas (na situação apresentada como exemplo) também é especificada pelo arquivo struts-config.xml com exemplificado abaixo.

<forward name="load" path="/cadastro.do?actionType=carregar"/>
<forward name="edit" path="cadastro"/>
 
Fluxo básico de controle

Menu X Segurança

Para aplicação dos mecanismos de segurança sobre os itens de menu, faz-se necessário a utilização das propriedades:
  • resource: seu valor deve corresponder ao valor atribuído ao campo “Chave de Busca” (resourcekey) no momento do cadastro do recurso que se deseja testar no Sistema de Segurança. Se esta propriedade não for informada o teste de permissão não é executado e este item de menu é SEMPRE mostrado a qualquer usuário do sistema.
  • action: deve ser utilizada em conjunto com a propriedade acima, pois informa qual a ação (read, update, insert, delete ou execution) deve ser testada no componente de Menu. Caso esta propriedade não seja informada e a resource sim, a ação padrãotestada será a read.

Menu X Estilo

Na tag menu:menu, há uma propriedade cols (ie.: <menu:menu ... cols="2">), que pode ser utilizada para configurar o número de colunas utilizadas para mostrar os submenus e seus itens. Esta propriedade deve ser utilizada com cuidado, uma vez que não se recomenda a utilização de mais de 3 (três) colunas, sob pena de a área do menu quando aberto, ultrapasse a área útil da tela, para as ultimas opções (no final da tela). Além de não ser agradável visualmente.
Esta propriedade não é responsável pela definição das dimensões da caixa mostrada na abertura de cada menu. Isto é definido no arquivo de estilo menu.css, e uma vez modificado o número de colunas, deve-se ajustar este estilo, caso contrário, o número de colunas mostrado não corresponderá ao espaço que ocupa, podendo causar desajustes visuais em alguns casos. Para mexer nas dimensões da caixa altere no arquivo menu.css, aproximadamente na linha 16:
.menubar, .menubar_hover { 
width:115px;
}

Utilização do Sistema de Segurança

Para diferenciação dos sistema ainda fora da interface padrão, o sistema de Segurança foi modificado, visando dar tratamento diferenciado às duas interfaces.
Para os sistemas nas interfaces antigas era necessário cadastrar as URLs para cada opção (representada pelos Grupos de Recursos dentro do sistema) de menu padrão, gerado automaticamente pelo próprio sistema de autenticação da Intranet.
Não se fazia necessário informar a URL do sistema, embora o Segurança oferecesse tal possibilidade.
Para os sistemas na nova interface, a única URL a ser informada deve ser a do próprio sistema para que a intranet possa oferecer acesso ao sistema.
Uma vez que a apresentação do menu se tornou responsabilidade de cada aplicação, a informação das URLs dos grupos não é mais necessária.
Atenção: para o Segurança o que distingue um sistema na interface nova e na velha é tão somente o preenchimento do campo URL no cadastro de Sistema!!
Não deixe de informá-la nos sistemas de interface nova, e nem informe-a por descuido nos sistemas de interface velha!