tutorials.de Buch-Aktion 02/2012
ERLEDIGT
NEIN
ANTWORTEN
0
ZUGRIFFE
981
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Tonteria Tonteria ist offline Mitglied
    Registriert seit
    Jan 2007
    Beiträge
    17
    Hi,

    ich habe ein Problem mit obiger RichFaces - Komponente.
    Und zwar habe ich mir das so vorgestellt, dass durch die Parameter value="entityHandler.ObjektContainer" und selection="entityHandler.selectedObject" genau spezifiziert ist, dass bei Selektion einer Zeile ein bestimmtes Objekt aus dem Container genommen wird, an dem dann CRUD-Methoden zum Einsatz kommen können.
    Anscheinend geht das nicht so einfach :

    Der View

    PHP-Code:
                <rich:scrollableDataTable rowKeyVar="rkv" frozenColCount="0" height="400px" 
                    
    width="700px" id="entityList" rows="40" columnClasses="col"
                    
    value="#{entityList}" var="s_entity" sortMode="single" binding="#{table}"
    selection="#{entityhandler.selection}"  rendered="#{identity.loggedIn}">
                    

                    <
    rich:column id="name">
                        <
    f:facet name="header"><h:outputText styleClass="headerText" value="Titel" /></f:facet>
                        <
    h:outputText value="#{s_entity.name}" />
                    </
    rich:column>
                    <
    rich:column id="topic">
                        <
    f:facet name="header"><h:outputText styleClass="headerText" value="Topic" /></f:facet>
                        <
    h:outputText value="#{s_entity.topic}" />
                    </
    rich:column>
                    
                    <
    rich:column id="city">
                        <
    f:facet name="header"><h:outputText styleClass="headerText" value="City" /></f:facet>
                        <
    h:outputText value="#{s_entity.city}" />
                    </
    rich:column>
                    
                    <
    rich:column id="author">
                        <
    f:facet name="header"><h:outputText styleClass="headerText" value="Author" /></f:facet>
                        <
    h:outputText value="#{s_entity.author}" />
                    </
    rich:column>
                    
                    <
    rich:column id="content">
                        <
    f:facet name="header"><h:outputText styleClass="headerText" value="Content" /></f:facet>
                        <
    h:commandLink id="inhalt" action="#{entityhandler.loadentityData}">
                        <
    f:param name="s_entityID" value="#{s_entity.id}" />
                        <
    h:outputText value="Inhalt" />
                        </
    h:commandLink>
                    </
    rich:column>
                </
    rich:scrollableDataTable>
                    <
    h:commandButton id="delete" value="Delete"
        
    action="#{entityhandler.delete}" />
        <
    f:param name="s_entityID" value="#{s_entity.id}" />
             </
    s:div
    und der EntityHandler :


    PHP-Code:

    @Name("entityhandler")
    @
    Stateful
    @Scope(ScopeType.CONVERSATION)
    public class 
    entityHandlerImpl implements entityHandler{

    @
    In (create=truerequired=false)
    private 
    org.domain.entitysubmission.entity.User user;

    @
    PersistenceContext (type PersistenceContextType.EXTENDEDunitName="entitySubmission")
    private 
    EntityManager em;

    @
    In
    @Out
    private FacesMessages facesMessages;

    @
    DataModel
    private List<org.domain.entitysubmission.entity.entityentityList = new ArrayList<org.domain.entitysubmission.entity.entity>();

    @
    DataModelSelection
    private org.domain.entitysubmission.entity.entity selectedEntity;

    @
    RequestParameter
    private Long s_entityID;

    @
    In(create=true)
    @
    Out(required=false)
    private 
    org.domain.entitysubmission.entity.entity entity;

    private 
    SimpleSelection selection = new SimpleSelection();


    private 
    UIScrollableDataTable table;

    public 
    SimpleSelection getSelection() {
        return 
    selection;
    }



    public 
    void setSelection(SimpleSelection selection) {
        
    this.selection selection;
    }


    public 
    void persistentityData(){
        
    //set relationship
        
    this.entityt.setUser(this.user);
        
    this.user.getentityList().add(this.entity);
        
    //persist data, because 1:1 relation via merge of user
        
    em.merge(this.user);
        
        
    //information to user
        
    facesMessages.add("entity erfolgreich angelegt!");
        }



    @
    Factory("entityList")
    public 
    void createentityList(){
    this.entityList em.createQuery("from entity order by topic").getResultList();
    }

    public 
    void loadentityData(){
        
    this.entity em.find(org.domain.entitysubmission.entity.entity.class, this.s_entityID);
        }

    @
    Remove
    @Destroy
    public void destroy() {
        
    // TODO Auto-generated method stub
        
    }

    public 
    void delete()

    {    
       
    this.entity em.find(org.domain.entitysubmission.entity.entity.class, this.s_entityID);
       
    this.user.getentityList().remove(this.entity);
       
    em.remove(this.entity);
       
    this.entity=null;
    }

    public 
    String takeSelection() {
        
    selectedentitys = new ArrayList<entity>();
        
    Iterator<Objectiterator getSelection().getKeys();
        while (
    iterator.hasNext()){
        
    Object key iterator.next();
        
    table.setRowKey(key);
        if (
    table.isRowAvailable()) {
        
    getSelectedEntities().add((entitytable.getRowData());
        }
        }
        return 
    null;
        }



    public 
    ArrayList<entitygetSelectedEntities() {
        return 
    selectedEntities;
    }



    public 
    void setSelectedEntities(ArrayList<entityselectedEntities) {
        
    this.selectedEntities selectedEntities;
    }



    Folgende Fehlermeldung kommt wenn ich den Delete-Button betätige, obwohl die Property offensichtlich existiert :

    PHP-Code:

    /entityOverview.xhtml @21,75 selection="#{entityhandler.selection}"Property 'selection' not found on type org.javassist.tmp.java.lang.Object_$$_javassist_seam_3 
    Wenn ich den View ändere und beim ScrollableDataTable als value="entityList" und als selection="selectedAbstract" angebe und dann den Delete-Button klicke kommt folgende exception :

    PHP-Code:

    "#{entityhandler.delete}: javax.ejb.EJBTransactionRolledbackException: id to load is required for loading" 
    Offensichtlich wird also keine Entity selektiert

    Ich erwarte nicht, dass jetzt jemand bei dem Wirrwarr durchsieht. Was mich weiterbringen würde wäre ein aktuelles Tutorial wie man mit RichFaces (+Seam) eine CRUD-App implementiert, in der man innerhalb eines ScrollableDataTables selektieren kann. Hab gesucht, aber leider gar nichts aktuelles gefunden Es sollte schon ein scrollable sein, weil die Datenmenge groß wird und sortieren und selektieren erwünscht ist.

    Edit : Was micht schon weiterbringen würde : Wie selektiert man im scrollableDataTable eine Entity ?

    Beste Grüße,

    Tonteria
    Geändert von Tonteria (06.08.10 um 17:05 Uhr)
     

Ähnliche Themen

  1. Richfaces DOM Update
    Von hiroorih im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 22.10.09, 14:54
  2. JSF, Richfaces und Google-Map
    Von schlumsch im Forum Java
    Antworten: 4
    Letzter Beitrag: 09.02.09, 09:37
  3. Beispiel einer einfachen CRUD Anwendung mit Springframework .Net und NHibernate
    Von Thomas Darimont im Forum .NET Application und Service Design
    Antworten: 11
    Letzter Beitrag: 08.01.08, 13:05
  4. RichFaces
    Von y0dA im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 10.05.07, 17:37
  5. CRUD in 5 minuten mit Netbeans 5.5
    Von Christian Fein im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 0
    Letzter Beitrag: 31.05.06, 16:27