JSF zum Verarbeiten, Validieren und Aktualisieren von schreibgeschützten / deaktivierten Eingabekomponenten auf jeden Fall zwingen

Ich erstelle einen Rechner, wo ein Benutzer die verschiedenen Operationen ausführen kann, indem er auf virtuelles Nummernfeld klickt. Jetzt möchte ich den Benutzer darauf beschränken, nur die verschiedenen Zeichen auszuwählen, indem er auf die Schaltflächen klickt und er sollte nicht in der Lage sein, die Werte über die Tastatur einzugeben. Ich habe versucht, readonly="true" aber es validiert weder die Eingabe noch die Werte in der Bean, wenn wir auf eine Schaltfläche klicken.

Sind solche Einschränkungen in jsf verfügbar?

Bildbeschreibung hier eingeben

Das ist der Effekt von JSFs Schutz vor manipulierten / angegriffenen Anfragen, bei denen der Hacker versucht, das readonly (und disabled ) Attribut zu umgehen, indem er das HTML DOM und / oder die HTTP Anfrage manipuliert.

Anstatt von

  

benutzen

  

oder

  

Dies stellt sicher, dass readonly nur während der readonly und nicht während aller anderen JSF-Phasen wirksam ist. Wenn JSF im Begriff ist, die Eingabekomponente während der Phase der readonly="false" Anforderungswerte zu dekodieren, wird es auf diese Weise readonly="false" .

Siehe auch:

  • andere Verwendungen von #{facesContext.currentPhaseId.ordinal}

Die Tastencodes für die obere Reihe von Zahlen sind 48-57, also könnten Sie eine function schreiben, um den Tastendruck für diese Zeichen zu deaktivieren.

Etwas wie das

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

Ich habe eine andere Problemumgehung gefunden:

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