Tem como impedir que o usuário abra uma nova janela para o mesmo sistema?

Estou pensando nisso pois o sistema que estou fazendo utiliza o scope=“session” para o ActionForm. Se o cara abrir várias janelas, as informações do form serão compartilhadas entre as diferentes janelas, pois estão na sessão. Para resolver isso, eu teria fazer umas mudanças no código e perderia algumas otimizações. Por enquanto, queria resolvê-lo impedindo que o usuário abrisse uma nova janela do sistema… tem como fazer isso?

abraços pessoal!

Para o IE:

// Desabilita o CTRL+N e o ESC
document.onkeydown = function(){
	if ( ((event.keyCode == 78) && (event.ctrlKey)) // CTRL+N
		    || event.keyCode == 27 ) {              // ESC
		event.cancelBubble = true;
		event.returnValue = false;
		event.keyCode = false; 
		return false;
	}
}

E para fazer com que o usuário não abra via menu do Browser execute o sistema numa window.open() sem o menu.

Mas o usuário ainda poderia clicar em um link apertando “Shift” ou apertando com o botão direito e “abrir em uma nova janela”. Tem como impedir fazendo algo no código, alguma forma que o sistema percebesse que naquela HttpSession só pode ter uma janela aberta? Não sei se existe uma forma de distinguir janelas, como se cada janela tivesse um identificador… há como? Estou usando Struts.

abraços!

Não tem como fazer algo assim, mesmo se desse dependeria do navegador (poderia funcinar em um, mas não em outro).

Nunca usei Java pra web, mas vou dar um chute:

Você pode fazer digamos uma varíavel boolean representando se já tem um aberto. Se já tiver, então mostra uma página de erro.