Controle de navegação VRaptor

Pessoal

Meu problema é o seguinte: possui uma página index.jsp que contem um menu e um div em que carrego as páginas quando clico em alguma opção do menu chamando o controlador do VRaptor. Um ajax simples pra não recarregar o menu toda vez.
Mas ainda assim nada impede o usuário de chegar na barre de endereço e digitar a URL referente a uma página qualquer… por exemplo produtos/listar. Como o css é carregado nesse index.jsp e todas as páginas que são carregadas após o clique no menu utilizam esse css a página que foi chamada via URL pelo usuário vem fora do formato lógicamente.

Existe alguma maneira de impedir que usuário acesse via URL esses páginas obrigando ele usar o menu ?

Agradeço desde já.

Abraços e boa noite.

Bom dia.

Que eu saiba, não existe, visto que o navegador entende igual para clique em link ou para o input direto da URL.

O que eu faria:
Adicionaria esse código (se vc estiver usando jQuery) antes de tudo (coloque no document ready):

Isso vai fazer com que o jQuery passe esse parâmetro sempre que for fazer uma requisição ajax.

Ai, com um interceptor, você vê se tem esse parâmetro e redireciona, caso não tenha.

Eu ainda pensaria em uma forma de redirecionar para a página que o cara quer, mas com o index carregado…

tem algum motivo em especial pra vc não querer recarregar o menu?

não recarregar a toa …
existe algum jeito fácil ?

se não é uma parte da página cara de gerar, não tem o porque se preocupar com isso.

Ficar navegando pelas páginas via ajax prejudica um pouco a usabilidade, já que o usuário não consegue usar o botão back do browser, não consegue fazer bookmark das páginas, etc.

A menos que essa seja a intenção, eu não faria essa navegação por ajax.

Se vc quer mesmo fazer isso, aquela solução do isAjax: true do Rafael é suficiente. Só criar um interceptor que lê esse parametro do request, e se ele não vier vc redireciona pra home.

Lucas, dá para fazer algo bem feito com ajax sim, é só ir mudando a url depois do #, igual o gmail faz.

Assim, conseguimos fazer o back do navegador. É bem trabalhoso de ser feito, mas o resultado final fica muito legal!

Para isso valer a pena, precisa pensar que quando o usuário for acessar uma página que ele já abriu, você vai resgatá-la da memória, ou do próprio DOM mesmo (display: hidden;)…

Pensei bem no que o Lucas disse e tem razão. o menu e o cabeçalho são leves e não faz muito sentido usar.
Apesar de que gostaria de saber alguma maneira de resolver esse problema.