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
und der EntityHandler :
Folgende Fehlermeldung kommt wenn ich den Delete-Button betätige, obwohl die Property offensichtlich existiert :
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 :
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
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:
<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:
@Name("entityhandler")
@Stateful
@Scope(ScopeType.CONVERSATION)
public class entityHandlerImpl implements entityHandler{
@In (create=true, required=false)
private org.domain.entitysubmission.entity.User user;
@PersistenceContext (type = PersistenceContextType.EXTENDED, unitName="entitySubmission")
private EntityManager em;
@In
@Out
private FacesMessages facesMessages;
@DataModel
private List<org.domain.entitysubmission.entity.entity> entityList = 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<Object> iterator = getSelection().getKeys();
while (iterator.hasNext()){
Object key = iterator.next();
table.setRowKey(key);
if (table.isRowAvailable()) {
getSelectedEntities().add((entity) table.getRowData());
}
}
return null;
}
public ArrayList<entity> getSelectedEntities() {
return selectedEntities;
}
public void setSelectedEntities(ArrayList<entity> selectedEntities) {
this.selectedEntities = selectedEntities;
}
}
Folgende Fehlermeldung kommt wenn ich den Delete-Button betätige, obwohl die Property offensichtlich existiert :
PHP:
/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:
"#{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.


Edit : Was micht schon weiterbringen würde : Wie selektiert man im scrollableDataTable eine Entity ?
Beste Grüße,
Tonteria
Zuletzt bearbeitet: