La verdad es que no entiendo muy bien lo que quieres hacer, pero da la impresión de que no tienes claro qué es un arraylist o los map.
Cita: request.getParameter(X.B.b1)
Request es un Map, y tú buscas un objeto que tiene una clave.
Si X, B y b1 son tres objetos independientes, tendrás que recuperar cada uno por separado mediante la clave que le hayas dado.
Si X contiene a B, y B a b1, entonces X.B.b1 no tiene ningún sentido, porque los objetos no se recuperan de un arraylist como si fueran atributos de una clase, hay que utilizar los métodos get.