Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to edit a row in a datatable with jsf primefaces

I'm beginner in jsf Primefaces. I have a problem with primefaces data table. When i select a row to view it in a dialog component, nothing appears.

           <center>
                <p:panel id="panel" 
                         header="Gestion Points Services * Affichage *"  >
                    <h:form id="myform">
                        <center>

                            <p:dataTable id="lesPS" var="ps" 
                                         value="#{listerPointSBean.listePointservice}"
                                         rowKey="#{ps.idpointservice}"
                                         selection="#{listerPointSBean.selectedPointservice}"
                                         selectionMode="single"
                                         emptyMessage="Aucuune Info dans la base" 
                                         paginator="true" rows="12"  
                                         paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                                         rowsPerPageTemplate="5,10,15"

                                         >

                                <f:facet name="header">
                                    <p:outputPanel>
                                        <h:outputText value="Search all fields:" />
                                        <p:inputText id="globalFilter" style="width:150px" />
                                    </p:outputPanel>
                                </f:facet>

                                <f:facet name="header">  
                                    Afficher les Points Services
                                </f:facet>

                                <p:ajax event="rowSelect"   />  

                                <p:column headerText="ID" filterBy="#{ps.idpointservice}"
                                          sortBy="#{ps.idpointservice}">
                                    <f:facet name="header">
                                        <h:outputText value="ID" />
                                    </f:facet>
                                    <h:outputText value="#{ps.idpointservice}" />
                                </p:column>

                                <p:column headerText="Nom" filterBy="#{ps.nom}"
                                          sortBy="#{ps.nom}">
                                    <f:facet name="header">
                                        <h:outputText value="nom" />
                                    </f:facet>
                                    <h:outputText value="#{ps.nom}" />
                                </p:column>

                                <p:column headerText="adresse" filterBy="#{ps.adresse}"
                                          sortBy="#{ps.adresse}">
                                    <f:facet name="header">
                                        <h:outputText value="adresse" />
                                    </f:facet>
                                    <h:outputText value="#{ps.adresse}" />

                                </p:column>
                                <p:column headerText="email" filterBy="#{ps.email}"
                                          sortBy="#{ps.email}">
                                    <f:facet name="header">
                                        <h:outputText value="email" />
                                    </f:facet>
                                    <h:outputText value="#{ps.email}" />

                                </p:column>
                                <p:column headerText="tel" filterBy="#{ps.telephone}"
                                          sortBy="#{ps.telephone}">
                                    <f:facet name="header">
                                        <h:outputText value="tel" />
                                    </f:facet>
                                    <h:outputText value="#{ps.telephone}" />

                                </p:column>

                                <p:column headerText="latitude" filterBy="#{ps.latitude}"
                                          sortBy="#{ps.latitude}">
                                    <f:facet name="header">
                                        <h:outputText value="latitude" />
                                    </f:facet>
                                    <h:outputText value="#{ps.latitude}" />

                                </p:column>

                                <p:column headerText="longitude" filterBy="#{ps.longitude}"
                                          sortBy="#{ps.longitude}">
                                    <f:facet name="header">
                                        <h:outputText value="longitude" />
                                    </f:facet>
                                    <h:outputText value="#{ps.longitude}" />

                                </p:column>

                                <p:column headerText="Ville" filterBy="#{ps.ville}"
                                          sortBy="#{ps.ville}">
                                    <f:facet name="header">
                                        <h:outputText value="ville" />
                                    </f:facet>
                                    <h:outputText value="#{ps.ville}" />

                                </p:column>

                                <p:column headerText="Gouv" filterBy="#{ps.gouvernat}"
                                          sortBy="#{ps.gouvernat}">
                                    <f:facet name="header">
                                        <h:outputText value="gouv" />
                                    </f:facet>
                                    <h:outputText value="#{ps.gouvernat}" />

                                </p:column>



                                <p:column headerText="type" filterBy="#{ps.type}"
                                          sortBy="#{ps.type}">
                                    <f:facet name="header">
                                        <h:outputText value="type" />
                                    </f:facet>
                                    <h:outputText value="#{ps.type}" />

                                </p:column>

                                 <p:column>

                                 <p:commandButton style="margin-right:10%" id="affichButton" 
                                                 icon="ui-icon-search" 
                                                 actionListener="#{listerPointSBean.test}"      oncomplete="psDialog.show()" />

                                </p:column>



                            </p:dataTable>



                            <p:dialog id="psdialog" header="ps Detail" widgetVar="psDialog"
                                      resizable="false" width="500" height="350" showEffect="clip"
                                      hideEffect="fold">

                                <h:panelGrid id="display" columns="2" cellpadding="4">

                                    <h:outputText value="nom:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.nom}" />
                                    <h:outputText value="Adresse:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.adresse}" />
                                    <h:outputText value="Email:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.email}" />
                                    <h:outputText value="Tel:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.telephone}" />
                                    <h:outputText value="latitude:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.latitude}" />

                                    <h:outputText value="Longitude:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.longitude}" />
                                    <h:outputText value="Ville:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.ville}" />
                                    <h:outputText value="Gouv:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.gouvernat}" />
                                    <h:outputText value="Zip:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.zip}" />
                                    <h:outputText value="type:" />
                                    <h:outputText
                                        value="#{listerPointSBean.selectedPointservice.type}" />


                                </h:panelGrid>


                            </p:dialog>
                    </h:form>
                </p:panel>
            </center>
                ` 

The listerPointSBean managed bean is as follows:

@ManagedBean
@ViewScoped
public class ListerPointSBean implements Serializable {

private static final long serialVersionUID = 1L;
@EJB
PointserviceFacade bean;
List<String> Pointservices;
List<Pointservice> listePS;

private Pointservice selectedPointservice;

/**
 * @return the Pointservices
 */
public List<String> getPointservices() {
    listePS = bean.findAll();
    return Pointservices;
}

/**
 * @param Pointservices the Pointservices to set
 */
public void setPointservices(List<String> Pointservices) {
    this.Pointservices = Pointservices;
}

/**
 * @return the listePointservice
 */
public List<Pointservice> getListePointservice() {
    listePS = bean.findAll();
    return listePS;
}

/**
 * @param listePointservice the listePointservice to set
 */
public void setListePointservice(List<Pointservice> listePointservice) {
    this.listePS = listePointservice;
}

/**
 * @return the selectedPointservice
 */
public Pointservice getSelectedPointservice() {
    if(selectedPointservice ==null){
        selectedPointservice=new Pointservice();
    }

    return selectedPointservice;
}

/**
 * @param selectedPointservice the selectedPointservice to set
 */
public void setSelectedPointservice(Pointservice selectedPointservice) {
    this.selectedPointservice = selectedPointservice;
}

public void delete() {

    bean.remove(selectedPointservice);
}


public void editps(){
    bean.edit(selectedPointservice);

}

I'm using primefaces 3.5. Can you help me? Thanks.

like image 526
user3215299 Avatar asked Nov 20 '25 03:11

user3215299


2 Answers

there are a few mistakes you have done. first as commented by @tiny " Where the test() method in ListerPointSBean as specified in actionListener of "

in your bean make a test() method where you set the values of attributes you want to show in dialog box....

also right way to call dialog box is

 oncomplete="PF('psDialog').show()"
like image 156
Anas Avatar answered Nov 22 '25 17:11

Anas


In ajax rowSelect event you need to update your h:panelGrid inside p:dialog.

  <p:ajax event="rowSelect" update=":myform:display" oncomplete="psDialog.show()"/>
like image 45
Arun Raj Avatar answered Nov 22 '25 18:11

Arun Raj