DataModelSelection not injected
salski22 Sep 2, 2009 2:32 PMI'm new with seam :)
I can list objects with @DataModel when search method is called. I have edit button next to each object returned in dataTable
list.xhtml
<ui:define name="body">
<h:messages styleClass="message"/>
<h:form id="edit">
<rich:panel>
<f:facet name="header">Edit</f:facet>
<h:dataTable value="#{eventSearchMatches}" var="e">
<h:column>
<p><h:outputText value="#{e.startDate}" /></p>
<p><h:outputText value="#{e.description}" /></p>
</h:column>
<h:column>
<s:button value="Edit" action="#{eventList.editEvent}" />
</h:column>
</h:dataTable>
</rich:panel>
</h:form>
</ui:define>
</ui:composition>and my class
@Stateful
@Name("eventList")
public class EventBean implements IEventBean {
@PersistenceContext(unitName="polskirajweb")
private EntityManager em;
@In(value="event", create=true)
@Out(value="event", required=false)
private EventEntity mActiveEvent;
private String searchField;
@DataModel(value ="eventSearchMatches")
List<EventEntity> mEventMatches;
@DataModelSelection(value ="eventSearchMatches")
private EventEntity mSelEvents;
public EventEntity getMActiveEvent() {
return mActiveEvent;
}
public void setMActiveEvent(EventEntity activeEvent) {
mActiveEvent = activeEvent;
}
public String newEvent() {
newEvent(getMActiveEvent());
return "success";
}
public void newEvent(EventEntity g) {
try {
if(em.find(EventEntity.class, new Long(g.getEventId())) != null)
{
em.merge(g);
}
else
em.persist(g);
}
catch (Exception e) {
e.printStackTrace();
}
}
public String getSearchField() {
return searchField;
}
public void setSearchField(String searchField) {
this.searchField = searchField;
}
public String search()
{
String sField = "%" + getSearchField().toUpperCase() + "%";
try
{
Query q = em.createQuery("select e from EventEntity e where upper(e.city) like :searchField" +
" or upper(e.sidecity) like :searchField or upper(e.place) like :searchField" +
" or upper(e.description) like :searchField").setParameter("searchField", sField);
mEventMatches = q.getResultList();
}
catch (Exception e)
{
e.printStackTrace();
}
mSelEvents = null;
return "success";
}
public String editEvent() {
setMActiveEvent(mSelEvents);
return "success";
}
@Remove
@Destroy
public void destroy() {}
} I tried to debug and I see that mSelEvents i null all the time, so it looks like selected object from @DataModel is not injected into @DataModelSelection, am I right??
I want to edit variables from list.xhtml but when I enter new variables it will persist new object, it will not be updated.
Why this is not working, what I'm doing wrong???
Please help