将数据表面发送到另一页

时间:2014-11-25 14:06:37

标签: primefaces datatable

我是primefaces的新手,我做了一个数据表,我在index.xhtml中显示它我有一个按钮,当我推,它显示选择数据表(对话框),但我不知道如何发送选择数据表到另一页。对不起,我正在学习英语,thx。

的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 个答案:

答案 0 :(得分:1)

您无法将html发送到其他页面(对话框)。您应该只推送将在另一页上使用的数据。 要从datatable(被认为是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

}