primefaces数据表无法正常工作

时间:2013-07-04 11:35:26

标签: jsf primefaces

使用jsf和primefaces开发webapps并且我在检索数据表中的数据时面临一个问题,即使用primefaces的数据表标签在xhtml页面中显示数据

这是我的xhtml代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"> 

<h:head></h:head> 
<body> 
<h:form id="form">  
<h:panelGrid columns="2" cellpadding="10"> 
<h:outputText value="Batch Name" />
            <p:selectOneMenu id="city" value="#{allot.batchName}">  
                <f:selectItem itemLabel="Select Batch" itemValue="" />  
                <f:selectItems value="#{allot.batchList}" />  
                <p:ajax listener="#{allot.handleBatch}" />  
            </p:selectOneMenu> 
            <p:dataTable var="batch" value="#{allot.batchInfoList}" >  
                <p:column headerText="Tan">  
                    <h:outputText value="#{batch.tan}" />  
                </p:column>  
            </p:dataTable>  
  </h:panelGrid>
</h:form>  
</body> 
</html>

这是我用于检索数据的动作bean

package com.cation.action;

import java.util.ArrayList;
import java.util.List;

import com.cation.bean.BatchInfo;
import com.cation.controller.CationController;

public class Allocation {

    private String batchName;

    private List<BatchInfo> batchInfoList;

    private List<String> batchList = new ArrayList<String>();

    private CationController cationController = new CationController();

    public String getBatchName() {
        return batchName;
    }

    public void setBatchName(String batchName) {
        this.batchName = batchName;
    }

    public List<BatchInfo> getBatchInfoList() {
        return batchInfoList;
    }

    public void setBatchInfoList(List<BatchInfo> batchInfoList) {
        this.batchInfoList = batchInfoList;
    }

    public List<String> getBatchList() {
        return batchList;
    }

    public void setBatchList(List<String> batchList) {
        this.batchList = batchList;
    }

    public Allocation() {
        try {
            batchList = cationController.getAllBatch();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    public String handleBatch() {
        try {
            batchInfoList = new ArrayList<BatchInfo>();
            batchInfoList = cationController.getBatchByName(batchName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "allotInput";
    }
}

我的条件是,当从selectone菜单标签中选择一个值时,我将获得所选值,并使用该值来检索某些对象列表,并使用数据表在xhtml页面中显示。但问题是我正在获取对象列表,但xhtml页面中没有显示数据。

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

在这种情况下,通常使用“提交”按钮。

  1. 您从菜单中选择一个项目
  2. 您点击了提交按钮
  3. 表格正在填充数据。
  4. 您还需要的是dataTable的ID:

    <p:dataTable id="table" ...
    

    在你的Button中你需要更新表:

    <p:commandButton value="Update my table" actionListener="#{allot.handleBatch}" update="table" ...