Al dar clic en Ganga ocultamos los otros autocomplete
Debe cumplir las condiciones:
No se pueden crear referencias a otros entitys, porque solo se podrá almacenar uno en un momento indicado. En el ejemplo el chofer esta asignado a una Bodega o una Ganga o una Tienda, no puede estar asignados a todas, por lo tanto no seria adecuado crear los @Referenced, ya que necesitariamos asignarle uno existente de cada entity que fuesemos a relacionar.
Podemos usar autocomplete con dropdown = true
Usamos un <b:flyOutMenu> para mostrar la lista correspondiente a cada entity que deseamos relacionar por los atributos.
Los autocomplete deben ser renderizados en base al atributo esbodega, esganga, estienda correspondiente.
En ese ejemplo se mostrara como relacionar Bodega o Ganga o Tienda, con Chofer mediante los atributos:
tipoalmacen que indicara si es bodega, tienda o ganga
idalmacen: almacena el valor del idbodega, idtienda o idganga.
En el controller creamos atributo para cada entity relacionado
Definimos atributos boolean
Crear el metodo public String onUbicacionChange(String almacen) para validar la seleccion del <b:flyOutMenu>
En el método save() validar si esbodega, esganga o estienda para asignar los valores correspondientes en los atributos: tipoalmacen, idalmacen.
Crear el mètodo public String nombreLugar(Chofer chofer) , para devolver el nombre correspondiente.
En el list
Invocar el metodo que devuelve el tipo y id correspondiente.
Entity
Datos
Se almacena en la siguiente estructura.
new.xhtml
view.xhtml
Controller
Definir atributos booleanos para cada entity
Definir objetos de cada entity
Inyectar los repository y services de los entitys de referencia
El metodo init() inicializar el false los atributos booleanos
Crear objetos nuevos
Validar en base al tipoalmacen para buscar el entity correspondiente
preprare() validar el tipoalmacen
save() validar tipoalmacen
edit() validar tipoalmacen
nombreLugar(Chofer chofer), devuelve el nombre del lugar