Problema e solução com o adf uncommittedDataWarning, autoSubmit e partialSubmit

No ADF existe uma funcionalidade muito interessante para verificação do formulário de dados caso o usuário clique em algum link que saia da página. Porém está funcionalidade detém uma anomalia quando utilizada com componentes que usufluem do autoSubmit ou partialSubmit. Esta anomalia teoricamente não deveria acontecer pois todos os dados ainda não foram submetidos para finalizar o formulário, mas na prática está correto pois quando o ADF submete esses dados na requisição do autoSubmit o estado do managed bean e dos campos das páginas estão iguais, assim ele entende que o formulário não está mais na situação “DIRTY”. Depois de pesquisar bastante, na web não encontrei uma solução clara. No fórum da Oracle sobre o ADF, encontrei algo que me deu uma luz porém não funcionou muito bém, que era adicionar uma campo hidden na página e alterar o seu valor por javascript utilizando o

ExtendedRenderKitService erks =
Service.getService(context.getRenderKit(),
ExtendedRenderKitService.class);
 erks.addScript(context, "");

Partindo desta solução que não me ajudou, pesquisando o core do ADF, encontrei trechos que diziam que a manipulação deste uncommittedDataWarning era realizado pelo task flow, utilizando a sua propriedade Critial e pelas páginas utilizando por meio de javascript atualizando uma váriavel Dirty
da seguinte forma,

AdfPage.Page.setDataDirty(true);

Assim analisando mais uma vez o adf constatei que toda vez que há uma alteração no valor de algum campo do formulário ele aciona o código acima citado.Partindo desta ideia obviamente, pensei que utilizando este código chamado a partir do fonte do managed bean com a utilização do ExtendedRenderKitService resolveria o problema, porém mais uma vez veio a surpresa. Não é garantido a execução deste script pelo managed bean no final do request, portando hora o código funcionava e hora não.
O resultado de tudo isso foi que, eu teria que controlar isso na mão nas páginas que utilizavam partialSubmit ou autoSubmit. Espero que essa dica tire a dúvida de muita gente quando começar a utilizar o uncommittedDataWarning.
DICA IMPORTANTE
Isso ocorreu na versão 11.1.1.5, possa ser que outras versões mais recentes ja tenham resolvido isso.

, , , ,

  1. Deixe um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: