4

レコード数が表示されているprimefacesデータテーブルがあります。

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

私が見つけた最も近いサンプル/デモは、p:ajaxタグを使用してrowSelectイベントをリスナーメソッドにバインドすることでした http://www.primefaces.org/showcase-labs/ui/datatableRowSelectionInstant.jsf

同じhttp://forum.primefaces.org/viewtopic.php?f=3&t=14664の記事も1つあります。

、同じように実装しようとしましたが、うまくいきませんでした。

私はこのように試みており、何かを逃した場合は私を導きます。

   <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>

そしてバッキングBeanは:

@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");

    }

}

では、rowselectイベントで別のページに移動するにはどうすればよいですか?フォームをナビゲートした後、その値をどのように表示できますか。

私はonRowSelect()メソッドの中に入ることができます、実際の問題は彼がそのパスを取得または理解できないことです:

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

そのため、この行の後にログを印刷することはできません。なんでそうなの?Liferayを使用しているからですか?

プラが案内してくれます。

4

2 に答える 2

11

間違って定義したため、onRowSelectは実行されないと思います。

これを試して:

public void onRowSelect(SelectEvent event)
{


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


}
于 2012-05-29T07:38:04.387 に答える
-3

uがFacesServletを使用している場合は、.xhtmlの代わりに.jsfを使用してください

public void onRowSelect(SelectEvent event)
{
  FacesContext.getCurrentInstance().getExternalContext().redirect("page.jsf?id="+pat.getId());
}
于 2012-06-08T07:24:31.450 に答える