Estoy aprendiendo Java EE y me encontré con un problema que no puedo resolver. tengo este xhtml:
<h:form> <fieldset> <legend>Random Number (with execute="someId")</legend> Range: <h:inputText value="#{numberGenerator.range}" id="rangeField"> <f:ajax event="change" execute="@this" render="numField3"/> <f:ajax event="focus" execute="@this" render="numField3"/> </h:inputText><br/> <h:commandButton value="Show Number" action="#{numberGenerator.randomize}"> </h:commandButton><br/> <h2><h:outputText value="#{numberGenerator.number}" id="numField3"/></h2> </fieldset> </h:form>y aquí está el frijol:
package javaeetutorial.ajaxguessnumber; import javax.faces.bean.*; @ManagedBean public class NumberGenerator { private double number = Math.random(); private double range = 1.0; public double getRange() { return(range); } public void setRange(double range) { this.range = range; } public double getNumber() { return(number); } public double getNumber2() { return(Math.random() * range); } public String randomize() { number = range * Math.random(); return(null); } }Mi pregunta es ¿cómo puedo lograr que el valor se represente en outputText cada vez que inputText está enfocado o cambia de valor? Hasta ahora solo logré actualizarlo cuando el inputText está enfocado, pero en el cambio de valor no sucede nada.
Pruebe keyup en lugar de change . La lista de eventos admitidos son: blur , change , click , action , dblclick , focus , tecla keydown , tecla presionada, keypress keyup , mousedown , mousemove , mouseout , mouseover , mouseup y select .
Sin embargo, es probable que esto active una gran cantidad de eventos ajax en su servidor, así que prepárese para eso. Obtendrá un evento por cada pulsación de tecla.
fuente: https://www.beyondjava.net/a-comprehensive-guide-to-jsf-ajax