solo - ¿Qué es el enlace de componentes en JSF? ¿Cuándo se prefiere usar?
validar formulario primefaces (2)
Esta pregunta ya tiene una respuesta aquí:
He leído sobre el enlace de componentes con el atributo de binding
en las siguientes preguntas:
- Unión de componentes JSF: cierta confusión
- componente vinculante vs findComponent () - cuándo usar qué?
Entiendo que vincula el componente UI detrás de la etiqueta JSF en la vista a una propiedad UIComponent
en el bean de respaldo. Sin embargo, estoy confundido sobre el uso del enlace de componentes y cuándo deberíamos usarlo. ¿Puede alguien explicarlo de una manera más simple y dar algunos ejemplos prácticos?
Debe usarlo si desea tener acceso a todo el UIComponent
lugar de solo su valor. Por ejemplo, para acceder a algunos métodos que no se pueden invocar / enlazar en la vista. Esto se responde en la primera pregunta que encontraste: enlace de componentes JSF: alguna confusión
La segunda pregunta que encontraste, la vinculación de componentes frente a findComponent (): ¿cuándo usar qué? , simplemente responde " binding
versus findComponent()
" , no responde " binding
versus value
" en absoluto, como pareces pensar. Por favor no te confundas con esto. value
obviamente ganaría sobre el binding
.
En el código del mundo real, el enlace de componentes al bean de respaldo a menudo solo se usa cuando el desarrollador necesita manipular a sus hijos mediante programación, por ejemplo, component.getChildren().add(...)
. Sin embargo, el bean debe solicitar un alcance. Un ámbito más amplio puede generar inconsistencias, ya que las instancias de los componentes se crean básicamente por solicitud y no deben compartirse entre varias solicitudes. El ámbito de vista también puede, pero esto es muy ineficiente en memoria, y en las versiones de Mojarra anteriores a 2.1.18, el ahorro de estado parcial también debe estar desactivado; de lo contrario, la instancia de bean con ámbito de vista a la que se hace referencia se volverá a crear implícitamente en cada solicitud. Ver también JSTL en JSF2 Facelets ... tiene sentido? para una respuesta relacionada.
También es posible vincular el componente a "la vista". P.ej
<h:someComponent binding="#{some}">
Esto se refiere a una instancia de UIComponent
en el alcance de Facelet ("alcance de página"). Esto le permite usar, por ejemplo, #{some.clientId}
, #{some.value}
en cualquier lugar de la misma página. Tenga en cuenta que no hay bean de respaldo involucrado aquí. Consulte también el enlace de componente JSF sin propiedad de bean .
Aquí hay algunos dispositivos de uso del atributo de binding
del mundo real:
- desactivar el segundo campo de texto después de la validación de datos a través de ajax del primer campo de texto
- Verificar qué forma tiene un error
- Validación del texto de entrada basado en la selección de la lista desplegable
- ¿Cómo dejar que la validación dependa del botón presionado?
- Cómo implementar la numeración de filas en h: dataTable
- Dividir java.util.Date en dos h: campos de entrada de texto que representan hora y minuto con f: convertDateTime
lea esta respuesta:
¿Cuáles son las ventajas de utilizar el atributo de enlace en JSF?
Sin embargo, muchas personas en la comunidad no recomiendan vinculantes. Vea este artículo por ejemplo:
http://drewdev.blogspot.com/2009/01/jsf-component-binding-stinks.html