Pregunta

En JSF, ¿es posible resolver el siguiente escenario de validación / actualización utilizando el marco de validación de JSF (también conocido como validadores, inmediato, requerido, etc.)?

+-- Form ----------------------------------------------------+
|                                                            |
| Field A: |____________|v|                                  |
| Field B: |____________|v|                                  |
| Field C: |____________|v| Button: [Update C using A and B] |
| Field D: |____________|v| Button: [Update D using B and C] |
|                                                            |
| More Fields: ...                                           |
|                                                            |
| Button : [Submit All]                                      |
+------------------------------------------------------------+

Donde todos los campos son desplegables y donde presionar el botón [Actualizar C] solo haría que A, B y C validen pero no el resto, presionar el botón [Actualizar D] solo haría que los campos B, C y D validar y presionar el botón [Enviar todo] hará que todos los campos se validen.

¿Fue útil?

Solución

Técnicamente, sí, es posible hacer esto con validadores / inmediatos. Sin embargo, no sería particularmente simple.

Si agrega validadores, la lógica en [Actualización C usando A y B] solo se ejecutará si todos los validadores pasan o si su atributo inmediato se ha establecido en verdadero. Si su atributo inmediato se ha establecido en verdadero, la lógica del botón no puede leer los valores de los componentes enviados utilizando getValue o cualquier objeto al que esté vinculado el componente; debe usar getSubmittedValue (una mala idea).

Un mejor enfoque sería hacer su lógica de validación en un bean administrado al que están vinculados todos los controles. Puede poner la lógica de validación en cualquier método al que estén vinculados sus botones. Use el botón [Enviar todo] para guardar sus datos validados en su base de datos / almacén de persistencia / lo que sea.

Otros consejos

Normalmente hacía cosas similares con Ajax, donde enviaba partes que me interesaban al servidor, validaba / procesaba allí y devolvía los resultados a la página. Por otro lado, es un bypass completo de JSF y sus mecanismos de validación, así que supongo que no es realmente la solución más inteligente / óptima ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top