4 votes

Naviguer vers une autre page sur rowselect of datatable in primefaces

J'ai une table de données primefaces dans laquelle le nombre d'enregistrements est affiché.

I want navigate to another page on the rowSelect event (to edit the selected entity for example) .

L'exemple le plus proche que j'ai pu trouver est l'utilisation de la balise p:ajax pour lier l'événement rowSelect à une méthode d'écoute. http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionInstant.jsf

J'ai également reçu un article pour le même sujet http://forum.primefaces.org/viewtopic.php?f=3&t=14664

J'ai essayé de mettre en œuvre la même chose qu'eux, mais cela n'a pas fonctionné non plus.

J'essaie de procéder de cette manière et guidez-moi si j'ai oublié quelque chose.

   <p:dataTable var="product" value="#{addPatientBB.patientAddList}" paginator="true" rows="10" 
             selection="#{addPatientBB.pat}" selectionMode="single"> 

    <p:ajax event="rowSelect" listener="#{addPatientBB.onRowSelect}" />  

        <p:column>  
            <f:facet name="header">  
                <h:outputText value="FirstName" />  
            </f:facet>  
            <h:outputText value="#{product.firstName}" />  
        </p:column>  

          <p:column>  

            <f:facet name="header">  
                <h:outputText value="Email" />  
            </f:facet>  
          <h:outputText value="#{product.email}" />    

           </p:column>  

        <p:column>  
            <f:facet name="header">  
                <h:outputText value="Gender" />  
            </f:facet>  
          <h:outputText value="#{product.gender}" />    

           </p:column> 

     </p:dataTable>

Et le haricot d'accompagnement est :

@ManagedBean
@ViewScoped
public class AddPatientBB implements Serializable
{
    private Patient pat;

    public Patient getPat()
    {
    System.out.println("tried to get pat");
    return pat;
    }

    public void setPat(Patient pat)
    {
    this.pat = pat;
    System.out.println("tried to set pat");
    }

    public void onRowSelect()
    {
    System.out.println("inside onRow select  Method");
    ConfigurableNavigationHandler configurableNavigationHandler = (ConfigurableNavigationHandler) FacesContext.getCurrentInstance().getApplication().getNavigationHandler();

    System.out.println("navigation objt created");

    configurableNavigationHandler.performNavigation("Page?faces-redirect=true");

    // Page is my navigation page where I wish to navigate named as
    // "Page.xhtml"

    System.out.println("Navigation executed");

    }

}

Comment puis-je naviguer vers une autre page lors de l'événement rowselect ? et comment puis-je afficher ses valeurs après avoir navigué dans le formulaire.

Je suis capable d'aller à l'intérieur de la méthode onRowSelect(), en fait le problème est qu'il n'est pas capable d'obtenir ou de comprendre ce chemin :

configurableNavigationHandler.performNavigation("Page?faces-redirect=true") ;

il n'est donc pas en mesure d'imprimer des journaux après cette ligne. Pourquoi en est-il ainsi ? Est-ce parce que j'utilise Liferay ?

Pla me guide.

11voto

Tankhenk Points 634

Je pense que la fonction onRowSelect n'est jamais exécutée parce que vous l'avez mal définie.

Essayez ceci :

public void onRowSelect(SelectEvent event)
{

  FacesContext.getCurrentInstance().getExternalContext().redirect("page.xhtml?id=" +pat.getId());

}

-3voto

Ashish Points 7

Si vous utilisez FacesServlet, utilisez .jsf au lieu de .xhtml.

public void onRowSelect(SelectEvent event)
{
  FacesContext.getCurrentInstance().getExternalContext().redirect("page.jsf?id="+pat.getId());
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X