data not populate in the form with edit action
horrikhalid May 7, 2009 1:55 PMHello,
I have some problems with my application:
1- When I click to edit a row from the datatable, the form is shown but is empty w/out data
2- If I add new record the datatable is not updated
the SessionBean:
@Stateless @Name("manageDocument") @Scope(ScopeType.SESSION) public class ManageDocumentAction implements ManageDocument { private static String documentName; @In(required=false) private Document document; @PersistenceContext private EntityManager em; @DataModel private List<Theme> themes; @DataModel private List<Directory> directories; @DataModel private List<Document> documentList; @Override public String addDocument() { this.document.setDocument(this.getDocumentName()); em.persist(document); return "/managedocument.xhtml"; } @SuppressWarnings("unchecked") @Factory("directories") public void findDirectories() { directories = em.createQuery("FROM Directory d").getResultList(); } @SuppressWarnings("unchecked") @Factory("themes") public void findThemes() { themes = em.createQuery("FROM Theme t").getResultList(); } @Remove public void destroy() {} @Override public void listener(UploadEvent event) throws IOException { UploadItem item = event.getUploadItem(); File srFile = item.getFile(); String dtFile = PropertiesRniim.getProperty("DOC_REPO")+File.separatorChar+item.getFileName(); FileUtils.copyfile(srFile.getAbsolutePath(), dtFile); this.setDocumentName(dtFile); } public String getDocumentName() { return documentName; } public void setDocumentName(String documentName) { this.documentName = documentName; } @SuppressWarnings("unchecked") @Factory("documentList") public void findDocuments() { this.documentList = em.createQuery("from Document d").getResultList(); } @Override public String editDocument(Document doc) { this.document = doc; return "/adddocument.xhtml"; } @Override public String addOrUpdateDocument() { if(document.getIdDoc()== 0) return this.addDocument(); else return this.updateDocument(); } @Override public String updateDocument() { String update ="UPDATE Document d SET d.title='"+this.document.getTitle()+"' where d.idDoc="+this.document.getIdDoc(); em.createQuery(update); return "/managedocument.xhtml"; } @Override public String deleteDocument(Document doc) { String delete ="DELETE FROM Document d WHERE d.idDoc='"+doc.getIdDoc()+"'"; em.createQuery(delete); return "/managedocument.xhtml"; } }
the editpage.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j" template="layout/template.xhtml"> <ui:define name="body"> <h:form> <f:facet name="header">Ajouter un nouveau document</f:facet> <div class="dialog"> <h:panelGrid columns="2" rowClasses="prop" columnClasses="name,value"> <h:outputLabel for="title">Titre</h:outputLabel> <h:inputText id="title" value="#{document.title}"/> <h:outputLabel for="ref">reference</h:outputLabel> <h:inputText id="ref" value="#{document.ref}"/> <h:outputLabel for="summary">resume</h:outputLabel> <h:inputTextarea id="summary" value="#{document.summary}"/> <h:outputLabel for="theme">theme</h:outputLabel> <h:selectOneMenu id="theme" value="#{document.theme}"> <s:selectItems value="#{themes}" var="theme" label="#{theme.themeName}"/> <s:convertEntity /> </h:selectOneMenu> <h:outputLabel for="keyWords">Mot cle</h:outputLabel> <h:inputText id="keyWords" value="#{document.keyWords}"/> <h:outputLabel for="directory">repertoire</h:outputLabel> <h:selectOneMenu id="directory" value="#{document.directory}"> <s:selectItems value="#{directories}" var="directory" label="#{directory.directoryName}"/> <s:convertEntity /> </h:selectOneMenu> <h:outputLabel for="directory">Document</h:outputLabel> <rich:fileUpload fileUploadListener="#{manageDocument.listener}" id="upload" immediateUpload="true"> <a4j:support event="onuploadcomplete" reRender="info" /> <f:facet name="label"> <h:outputText value="{_KB}KB from {_MB}MB uploaded --- {mm}:{ss}" /> </f:facet> </rich:fileUpload> </h:panelGrid> </div> <h:inputHidden id="id" value="#{document.idDoc}"/> <div class="actionButtons"> <h:commandButton value="Valider" action="#{manageDocument.addOrUpdateDocument}"/> </div> </h:form> </ui:define> </ui:composition>
the managedocument.xhtml
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:rich="http://richfaces.org/rich" xmlns:s="http://jboss.com/products/seam/taglib" xmlns:a="http://richfaces.org/a4j"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <ui:composition template="layout/template.xhtml"> <ui:define name="body"> <h1>Bienvenue </h1> <rich:panel> <h:panelGrid columns="2"> <h:graphicImage value="/img/document_new.png" alt="Seam logo"/> <h:outputLink value="adddocument.seam"> <f:verbatim>Ajouter documents</f:verbatim> </h:outputLink> </h:panelGrid> </rich:panel> <h:form> <rich:dataTable value="#{documentList}" var="doc" columnClasses="center" rows="15" reRender="ds"> <f:facet name="header"> <h:outputText value="Ref"/> </f:facet> <rich:column sortBy="#{doc.ref}"> <f:facet name="header"> <h:outputText value="Ref"/> </f:facet> <h:outputText value="#{doc.ref}"/> </rich:column> <rich:column sortBy="#{doc.title}"> <f:facet name="header"> <h:outputText value="titre"/> </f:facet> <h:outputText value="#{doc.title}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Mot cle"/> </f:facet> <h:outputText value="#{doc.keyWords}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Resumé"/> </f:facet> <h:outputText value="#{doc.summary}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Lien"/> </f:facet> <h:outputText value="#{doc.document}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Theme"/> </f:facet> <h:outputText value="#{doc.theme.themeName}"/> </rich:column> <rich:column> <f:facet name="header"> <h:outputText value="Mot cle"/> </f:facet> <h:outputText value="#{doc.directory.directoryName}"/> </rich:column> <rich:column> <f:facet id="ActionFacet" name="header">Action</f:facet> <s:link id="viewDoc" value="Modifier" action="#{manageDocument.editDocument(doc)}"/>   <s:link id="removeDoc" value="Supprimer" action="#{manageDocument.deleteDocument(doc)}"/> </rich:column> <f:facet name="footer"> <rich:datascroller id="ds"></rich:datascroller> </f:facet> </rich:dataTable> </h:form> </ui:define> </ui:composition> </html>
please help me
Regards HORRI