¿Cómo dejar que la validación dependa del botón presionado?

He creado el formulario y quiero mostrar los elementos existentes anteriores en una tabla mientras crea uno nuevo. Me gustaría mostrar elementos coincidentes a medida que el formulario se llena. Pero cuando bash filtrar la lista sin completar el formulario, aparecen los mensajes de validación y la tabla no se actualiza.

No sé si es posible, pero lo que quiero hacer es algo como esto:

  


//validate and save

//don't validate, and update the table.

Soy muy nuevo en JSF.

Entiendo que desea filtrar según el campo de entrada de name . El envía por defecto una solicitud ajax y tiene un atributo de process en el que puede especificar qué componentes le gustaría procesar durante el envío. En su caso particular, debe procesar solo el campo de entrada de name y el botón actual (para que se invoque su acción).

  

El atributo de process puede tomar una colección separada por espacios de las ID de cliente (relativas) de los componentes, en donde @this refiere al componente actual. Se predetermina en caso de to @form (que cubre todos los campos de entrada del formulario actual y el botón presionado), es por eso que todos fueron validados en su bash inicial. En el ejemplo anterior, todos los demás campos de entrada no se procesarán (y por lo tanto tampoco se validarán).

Si, sin embargo, tiene la intención de omitir la validación required para todos los campos cada vez que se presiona el botón en cuestión, para que eventualmente pueda procesar múltiples campos que no necesariamente deben completarse, entonces necesita hacer el required="true" a conditional” que verifica si el botón ha sido presionado o no. Por ejemplo, permítale que evalúe true solo cuando se haya presionado el botón guardar:

  ...  ...  

De esta forma no se validará como se required="true" cuando se presiona un botón diferente. El truco en el ejemplo anterior es que el nombre del botón presionado (que es esencialmente el ID del cliente) se ha enviado como parámetro de solicitud y que simplemente puede verificar su presencia en el mapa de parámetros de solicitud.

Ver también:

  • Comprender el proceso / actualización PrimeFaces y los atributos JSF f: ajax execute / render

Además de la respuesta de BalusC (muy útil y completa), deseo agregar que cuando use un validará (validaciones requeridas, personalizadas) todos los campos en el donde el botón de comando está ubicado, por lo tanto, cuando necesite usar más de un botón de comando, podría considerar que es una buena práctica usar diferentes para diferentes responsabilidades para evitar comportamientos inesperados al enviar acciones de los botones de comando. Está bien explicado en una respuesta de BalusC: múltiples h: formulario en una página JSF

Si su formulario tiene validaciones y no actualiza o no muestra mensajes, puede tener un dolor de cabeza pensando que el no está su acción, pero es probable que sea un problema de validación eso no ha sido mostrado.

He probado esto con envíos no ajax:

  ...  ...     

La primera entrada se requiere validada solo en el envío del botón Guardar1.

Cambie su comando de filtro de esta manera para ignorar la validación:

  

EDITAR:

La publicación relacionada en SO, creo que esto también resolverá tu problema

JSF 2.0: ¿Cómo omitir la validación de beans JSR-303?