Cadres CRUD JSF 2.0 recommandés [clos]

Quelqu'un peut-il recommander un cadre pour faciliter le développement CRUD dans le JSF 2.0?

Aspects que j'ai le plus de valeur:

  • aussi léger Que possible; limité dépendances de bibliothèques tierces
  • Soutien évolution modèle de domaine
  • besoin limité de codage répétitif; prise en charge des échafaudages et/ou des métaannotations

Tous les conseils très apprécié! La vôtre, J.

30
demandé sur BalusC 2010-07-05 18:48:34

6 réponses

CRUD est en effet un morceau de gâteau en utilisant JSF 2.0 fourni facilité standard: a @ViewScoped haricots en combinaison avec un <h:dataTable> essentiellement déjà suffisant. Voici un exemple de code qui est sans honte copié de cet article.

Bean:

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.

}

Page:

<!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>

en outre, Netbeans a utile pour les assistants pour générer une application CRUD basée sur un datamodel.

47
répondu BalusC 2013-04-11 16:42:26

JSF 2.0 elle-même. CRUD est très facile à faire avec JSF seul - pas besoin d'un autre cadre. Vous avez besoin d'

  • 1 haricot cultivé (annoté avec @ManagedBean)
  • 2 pages xhtml (facelets) - une liste et un pour modifier/créer
  • <h:dataTable> avec unedit lien / bouton, par lequel vous définissez l'objet row courant dans la fève gérée (en utilisant action="#{bean.edit(currentRowObject)}"). (Dans la JSF 1.2, cela a été réalisé par<f:setPropertyActionListener>)
  • méthodes D'Action (void, sans arguments) pour gérer les opérations
  • @PostConstruct pour charger les données initialement.
8
répondu Bozho 2010-07-06 07:01:48

j'ai créé celui-ci pour accélérer le processus de jsf crud la création de l'application: https://github.com/ignl/happyfacescrud Hors de la boîte de recherche, paresseux tableau de données, la visualisation/l'édition, des composants personnalisés qui réduit le code de façon spectaculaire et, bien sûr, flexible.

5
répondu Ignas 2016-03-03 16:05:04

j'ai trouvé cet article utile:

conversation CRUD in Java EE 6

http://www.andygibson.net/blog/tutorial/pattern-for-conversational-crud-in-java-ee-6/

Par Andy Gibson

3
répondu Jan 2010-08-31 08:45:05

j'ai eu le même problème que décrit: créer une application CRUD aussi rapide que possible dans JEE6.

Belle Générateur trouvé à: http://sourceforge.net/projects/jbizmo/

après avoir défini (Graph-Editor!) votre Business-Model/Domain-Model, JBizMo crée la base de données et toute une CRUD-App hors de la boîte.

  • i18n, JAAS, également pris en charge
  • les vues et les Menus sont générés
  • ... un tas de paramètres à définir ...
2
répondu Michael Leitner 2012-10-04 12:59:42

j'ai trouvé un générateur de crud opensource pour JSF+Primefaces

http://minuteproject.wikispaces.com/Primefaces

Et aussi générer des crud pour la plupart des cadres de http://minuteproject.wikispaces.com/

1
répondu Sam 2013-09-04 10:23:59