...usar o wi.token
É comum algumas aplicações web requererem que se controle ou que se evite que o usuário possa utilizar alguns recursos do browser como voltar ou atualizar as páginas, podendo causar o processamento dos dados de uma mesma página repetidas vezes. Como exemplo: suponha uma aplicação web que onde o usuário acessa uma página que realiza uma operação de débito em uma conta-corrente bancária, e que não seja oferecido um controle transacional sobre esta página, se o usuário pedir através do browser para que essa página seja atualizada, uma nova solicitação de débito será realizada sem que necessariamente o usuário tenha pedido isso conscientemente.
Para oferecer um controle transacional sobre esses tipos de ação o WebIntegrator gera um token (identificador) que servirá como um validador de página. Automaticamente, o WI Engine gera para cada página WSP solicitada, um token de transação único identificado na variável wi.token, este token será usado para garantir e reforçar uma única requisição para uma transação em particular.
Para que o controle seja feito basta referenciar essa variável (wi.token) na página que terá sua transação controlada. Quando os dados da página são enviados para o servidor, o valor do token também deverá ser enviado pela página como conteúdo de uma variável chamada wi.token, isso pode ser feito criando um campo no formulário do tipo HIDDEN cujo atributo NAME seja wi.token e o atributo VALUE referencie |wi.token|. No lado servidor o valor da variável wi.token é comparado com o token que está armazenado na sessão do usuário, caso os valores coincidam, é atribuída à variável wi.token.ok o valor true, se os valores não coincidirem a variável wi.token.ok terá seu valor igual a false.
As páginas criadas pelo WIzard já referenciam automaticamente a variável wi.token, portanto estando elas prontas para terem um controle transacional. Uma maneira para implementar esse controle é colocar um evento no pós-página da página que será controlada para que faça um desvio para uma outra página se o token não for válido ou, em termos de condição, se |wi.token.ok| != true.