Parece que el problema podría estar en la lógica del método calcular o en cómo se enlaza el evento al componente. Aquí algunas cosas para verificar:
Validación del valor: Asegúrate de que los valores de bloque1, bloque2, etc., son números y no null. Si alguno es null, la suma fallará silenciosamente.
Eventos del componente: Cambia event="change" por event="blur" o prueba con keyup para validar si el evento se está disparando correctamente.
Actualización del mensaje: Asegúrate de que el componente con ID mensaje exista en el formulario, porque estás intentando actualizarlo.
Depuración: Agrega más System.out.println() en el método para confirmar que está siendo llamado y que cumplimientototal tiene el valor esperado.
Si después de estos pasos no se soluciona, puede ser un problema de configuración o cómo estás manejando los valores en el ManagedBean. 😊
_______________________________________________________________
Maestro de programación de EBC | Soy programador profesional | Me gusta la música.
Buena tarde para quien me pueda ayudar, tengo este código en java para un aplicativo web que el objetivo es que cuando se digite un valor en ese campo el valide que si es mayor a 100 muestre u mensaje y no lo deje seguir, el problema es que no me esta funcionado, pero tampoco me genera error en la consola, les dejo el código del view y del HTML:
HTML:
<!-- BLOQUE 1 -->
<div class="ui-g-4 ui-md-4 ui-lg-2">
<h:outputText value="% Bloque 1: " />
</div>
<div class="ui-g-8 ui-md-2 ui-lg-1">
<p:inputText id="bloque1" value="#{aliactavisitaView.bloque1}"
maxlength="10" disabled="#{aliactavisitaView.deshabilitarcaja}"
onkeypress="return putOnlyNumbersPoint(event)"
>
<p:ajax event="change" process="@form" update="mensaje" listener="#{aliactavisitaView.calcular}" />
</div>
VIEW:
public void calcular() {
cumplimientototal = bloque1 + bloque2 + bloque3 + bloque4 + bloque5 + bloque6;
if (cumplimientototal>100) {
System.out.println("cumplimientototal3: " + cumplimientototal);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Advertencia", "Esta excediendo el 100%"));
return;
}else {
if(nombreactividad != null && !nombreactividad.isBlank()) {
if(codigoactividad.contentEquals("3.2") || codigoactividad.equals("3.3")) {
if(cumplimientototal>= 0 && cumplimientototal <=79.9) {
selconcepto = "D";
}else if(cumplimientototal >=80 && cumplimientototal <= 100){
selconcepto = "F";
}
}else if(!codigoactividad.equals("3.17")) {
if(cumplimientototal >= 0 && cumplimientototal <= 59.9) {
selconcepto = "D";
}else if(cumplimientototal >= 60 && cumplimientototal <= 89.9) {
selconcepto = "FCR";
}else if(cumplimientototal >= 90 && cumplimientototal <= 100) {
selconcepto = "F";
}
}else {
if(cumplimientototal >= 0 && cumplimientototal <= 59.9) {
selconcepto = "D";
}else if(cumplimientototal >= 60 && cumplimientototal <= 89.9) {
selconcepto = "FCR";
}else if(cumplimientototal >= 90 && cumplimientototal <= 100) {
selconcepto = "F";
}
}
}else {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Informacion", "Debe seleccioar una actividad"));
return;
}
}
}
Muchas gracias por su ayuda.