2014-11-25 61 views
0

我是在primefaces新手,我做了一個數據表,我在index.xhtml中顯示我有一個按鈕,當我推,它顯示選擇數據表(對話框),但我don'不知道如何將select datatable發送到另一個頁面。對不起,我正在學習英語,thx。發送數據primefaces到另一頁

的index.xhtml

<p:dataTable id="singleDT" var="emp" value="#{empresaBean.getEmpresaList()}" selectionMode="single" 
    scrollable="true" scrollHeight="400" selection="#{empresaBean.selectedEmpresa}" rowKey="#{emp.CLAVE}"> 
     <f:facet name="header"> 
      Lista de Empresas 
     </f:facet> 

     <p:column headerText="Id"> 
     <h:outputText value="#{emp.CLAVE}" /> 
     </p:column> 

     <p:column headerText="Nombre Empresa"> 
     <h:outputText value="#{emp.NOMBRE}" /> 
     </p:column> 

     <p:column headerText="AÑO"> 
     <h:outputText value="#{emp.EJERCICIO}" /> 
     </p:column> 

<f:facet name="footer"> 
    <p:button outcome="/pages/menu/menuPrincipal.xhtml" value="Seleccionar" title="Ir Menu"> 
    </p:button> 

<p:commandButton value="View" image="ui-icon ui-icon-search" 
     oncomplete="empresaDialog.show()"/> 
    </f:facet> 
</p:dataTable> 

<p:dialog header="Car Detail" widgetVar="empresaDialog" resizable="false" 
       width="200" showEffect="clip" hideEffect="fold"> 

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

      <h:outputText value="Clave:" /> 
      <h:outputText value="#{empresaBean.selectedEmpresa.CLAVE}" /> 

      <h:outputText value="Año:" /> 
      <h:outputText value="#{empresaBean.selectedEmpresa.NOMBRE}" /> 

      <h:outputText value="Año:" /> 
      <h:outputText value="#{empresaBean.selectedEmpresa.EJERCICIO}" /> 

     </h:panelGrid> 
    </p:dialog> 



     </h:form> 
    </h:body> 

EmpresaBean

@ManagedBean(name="empresaBean") 
@Scope 
@Component 
public class EmpresaBean { 

    @Autowired 
    private EmpresaService empresaService; 
    private Empresa empresa; 
    private Empresa selectedEmpresa; 
    private List<Empresa> empresasSmall; 

    public EmpresaService getEmpresaService() { 
     return empresaService; 
    } 

    public Empresa getSelectedEmpresa() { 
     return selectedEmpresa; 
    } 

    public void setSelectedEmpresa(Empresa selectedEmpresa) { 
     this.selectedEmpresa = selectedEmpresa; 
    } 

    public void setEmpresaService(EmpresaService empresaService) { 
     this.empresaService = empresaService; 
    } 

    public EmpresaBean(){ 
     empresa = new Empresa(); 
    // empresasSmall=new ArrayList<Empresa>(); 
     // list.add(new Empresa(getEmpresaList()); 
    } 
/* 
    public void addEmpresa(){ 
     empresaService.add(empresa); 
     empresa = new Empresa(); 
    } */ 

    public List<Empresa> getEmpresaList(){ 

     return empresaService.getAll(); 
    } 

    public Empresa getEmpresa() { 
     return empresa; 
    } 
    public void setEmpresa(Empresa empresa) { 
     this.empresa = empresa; 
    } 
} 

回答

1

你不能發送HTML到另一個頁面(對話)。您應該只推送將在另一頁上使用的數據。 要從數據表(它被認爲是一個List)推送數據,你應該使用@ManagedProperty註解。

假設你有索引頁:

@ManagedBean(name="index") 
@SessionScoped 
public class IndexPage implements Serializable { 

    private List<String> values; 

    //getter and setter 

} 

,你有另外一個頁面,在那裏你想使用該列表:

@ManagedBean(name="nextPage") 
@SessionScoped 
public class AnotherPage implements Serializable { 

    @ManagedProperty(value="#{index.values}") 
    private List<String> forwardedList; //list with values form index page 

    //getter and setter 

} 

http://www.mkyong.com/jsf2/injecting-managed-beans-in-jsf-2-0/

UPD:如果您想要轉發一行,但不是列表,您只需在AnotherPage類中進行小改動:

@ManagedBean(name="nextPage") 
@SessionScoped 
public class AnotherPage implements Serializable { 

@ManagedProperty(value="{empresaBean.selectedEmpresa}") 
private Empresa selectedValue; //value from selected row in your table 

//getter and setter 

}

+0

好吧,我理解你,但我怎麼知道如果我有選擇行或其他行? – ProSyth 2014-11-25 14:47:31

+0

更新您的案例解決方案的答案。試試看 – 2014-11-25 14:56:33

+0

好的,現在有效,但我有其他錯誤,我寫了其他問題。 :) – ProSyth 2014-11-26 14:00:03

相關問題