example java jsf jsf-2 crud

example - java jsf jpa



Recomendaciones JSF 2.0 CRUD marcos (6)

¿Alguien puede recomendar algún marco para facilitar el desarrollo de CRUD en JSF 2.0?

Aspectos que más valoro:

  • Tan ligero como sea posible; dependencias limitadas en bibliotecas de terceros
  • Soporte para un modelo de dominio en evolución
  • Necesidad limitada de codificación repetitiva; soporte para andamios y / o metaanotaciones

Cualquier sugerencia muy apreciada! Atentamente, J.


Creé este para acelerar el proceso de creación de aplicaciones crud jsf: https://github.com/ignl/happyfacescrud Búsqueda fuera de cuadro, tabla de datos vagos, visualización / edición, componentes personalizados que reducen el código de forma espectacular y, por supuesto, flexibles.




JSF 2.0 en sí. CRUD es muy fácil de hacer solo con JSF, sin necesidad de ningún otro marco. Necesitas

  • 1 bean administrado (anotado con @ManagedBean )
  • 2 páginas xhtml (facelets): una para la lista y otra para editar / crear
  • A <h:dataTable> con un enlace / botón de edit , mediante el cual establece el objeto de la fila actual en el bean administrado (usando action="#{bean.edit(currentRowObject)}" ). (En JSF 1.2 esto fue logrado por <f:setPropertyActionListener> )
  • Métodos de acción ( void , sin argumentos) para manejar las operaciones
  • @PostConstruct para cargar los datos inicialmente.

Tuve el mismo problema que el descrito: crear la aplicación CRUD lo más rápido posible en JEE6.

Beautiful Generator encontrado en: http://sourceforge.net/projects/jbizmo/

Después de definir (¡Graph-Editor!) Su Business-Model / Domain-Model, JBizMo crea la base de datos y toda una aplicación CRUD fuera de la caja.

  • i18n, JAAS, también compatible
  • Se generan vistas y menús
  • ... un conjunto de parámetros para definir ...

CRUD es de hecho un pedazo de pastel usando JSF 2.0 con la instalación estándar: un frijol @ViewScoped en combinación con una <h:dataTable> básicamente ya es suficiente. Aquí hay un ejemplo de código que se copia descaradamente de este artículo .

Frijol:

package com.example; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.annotation.PostConstruct; import javax.faces.bean.ManagedBean; import javax.faces.bean.ViewScoped; @ManagedBean @ViewScoped public class Bean implements Serializable { private List<Item> list; private Item item = new Item(); private boolean edit; @PostConstruct public void init() { // list = dao.list(); // Actually, you should retrieve the list from DAO. This is just for demo. list = new ArrayList<Item>(); list.add(new Item(1L, "item1")); list.add(new Item(2L, "item2")); list.add(new Item(3L, "item3")); } public void add() { // dao.create(item); // Actually, the DAO should already have set the ID from DB. This is just for demo. item.setId(list.isEmpty() ? 1 : list.get(list.size() - 1).getId() + 1); list.add(item); item = new Item(); // Reset placeholder. } public void edit(Item item) { this.item = item; edit = true; } public void save() { // dao.update(item); item = new Item(); // Reset placeholder. edit = false; } public void delete(Item item) { // dao.delete(item); list.remove(item); } public List<Item> getList() { return list; } public Item getItem() { return item; } public boolean isEdit() { return edit; } // Other getters/setters are actually unnecessary. Feel free to add them though. }

Página:

<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Really simple CRUD</title> </h:head> <h:body> <h3>List items</h3> <h:form rendered="#{not empty bean.list}"> <h:dataTable value="#{bean.list}" var="item"> <h:column><f:facet name="header">ID</f:facet>#{item.id}</h:column> <h:column><f:facet name="header">Value</f:facet>#{item.value}</h:column> <h:column><h:commandButton value="edit" action="#{bean.edit(item)}" /></h:column> <h:column><h:commandButton value="delete" action="#{bean.delete(item)}" /></h:column> </h:dataTable> </h:form> <h:panelGroup rendered="#{empty bean.list}"> <p>Table is empty! Please add new items.</p> </h:panelGroup> <h:panelGroup rendered="#{!bean.edit}"> <h3>Add item</h3> <h:form> <p>Value: <h:inputText value="#{bean.item.value}" /></p> <p><h:commandButton value="add" action="#{bean.add}" /></p> </h:form> </h:panelGroup> <h:panelGroup rendered="#{bean.edit}"> <h3>Edit item #{bean.item.id}</h3> <h:form> <p>Value: <h:inputText value="#{bean.item.value}" /></p> <p><h:commandButton value="save" action="#{bean.save}" /></p> </h:form> </h:panelGroup> </h:body> </html>

Además, Netbeans tiene algunos asistentes útiles para generar genéticamente una aplicación CRUD basada en un modelo de datos.