Estoy utilizando JBoss Developer Studio (Eclipse + JBoss Tools +..) para crear una aplicación Web. Cuando creo una Entity llamada por ejemplo Producto, se me genera un archivo Producto_user1.java, Producto_user1Home.java y Producto_user1List.java
Dentro de Producto_user1List.java hay un método llamado getResultListProductos que me devuelve un List<Producto>
Entonces en un archivo ListadodeProductos.xhtml puedo crear una tabla con RichFaces de la siguiente forma:
<rich:dataTable id="productoList"
var="_producto"
value="#{producto_user1List.resultListProductos}"
rendered="#{not empty producto_user1List.resultListProductos}">
<h:column>
<h:outputText value="#{_producto.nombre}"/>
</h:column>
</rich:dataTable>
Hasta ahí todo perfecto.
Ahora si quisiera tener varios usuarios en la aplicación y utilizar la misma página "Listado deProductos.xhtml" y que cada uno tuviera su propia entidad, es decir su propia tabla de productos. Por ejemplo crear otra entidad que se llame Producto_user2.java que a su vez creará, Producto_user2Home.java, y Producto_user2List.java.
Cómo podría concatenar algo del estilo de esto para ponerlo en 'value' de Rich:dataTable:
value="#{producto_" + usuario + "List.resultListProductos}"
siendo usuario una variable, por ejemplo, en Seam, Identity.username
He probado de todo, llamando a una función externa que me lo concatene, pero como la función devuelve un string, value toma como valor un string, y por lo tanto me da un error cuando intenta acceder a <h:outputText value="#{_producto.nombre}"/>, ya que el atributo nombre de un string no existe.
Acepto sugerencias de como implementar mi aplicación, para que cada usuario tenga su tabla de productos independientes.
Una solución que he encontrado es crear una sola tabla de productos para todos los usuarios y una de las columnas sea el identificador del usuario, y que el método getResultListProductos me devuelva sólo los productos del usuario logueado. Pero cuando existan muchos usuarios en la aplicación y creen muchos productos, la tabla se hace inmensa. De ahí que quiero hacerlo en tablas independientes.