Força o JSF a processar, validar e atualizar componentes de input readonly / disabled de qualquer maneira

Eu estou criando uma calculadora onde um usuário pode fazer as várias operações, clicando no numpad virtual. Agora quero restringir o usuário a selecionar apenas os vários caracteres clicando nos botões e ele não deve poder inserir os valores usando o teclado. Eu tentei usar readonly="true" mas ele não está validando a input nem definindo os valores no bean quando clicamos em qualquer botão.

Temos essas restrições disponíveis no jsf?

insira a descrição da imagem aqui

Esse é o efeito da proteção do JSF contra solicitações violadas / atacadas em que o hacker tenta contornar o atributo readonly (e disabled ) manipulando o HTML DOM e / ou a solicitação HTTP.

Ao invés de

  

usar

  

ou

  

Isso garante que readonly seja efetivo somente durante a fase de resposta de renderização e não durante todas as outras fases do JSF. Portanto, quando o JSF estiver prestes a decodificar o componente de input durante a fase de aplicar valores, ele considerará readonly="false" dessa maneira.

Veja também:

  • outros usos de #{facesContext.currentPhaseId.ordinal}

Os códigos de tecla para a linha superior de números são 48-57, então você pode escrever uma function para desabilitar a tecla nesses caracteres.

Algo assim

 function disableEnter(event) { var charCode = (event.which) ? event.which : event.keyCode; if (charCode > 31 && (charCode > 47 || charCode < 58)) { return false;} } else return true; }  

Eu encontrei outra solução alternativa:

 function stopEvent(event){ event.stopPropagation(); event.preventDefault(); } onkeyup="stopEvent(event)" onkeydown="stopEvent(event)" onkeypress="stopEvent(event)"