-1

我正在使用 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 页面中没有显示数据。

谁能帮我解决这个问题。

4

1 回答 1

1

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

  1. 您从菜单中选择一个项目
  2. 您单击提交按钮
  3. 表正在填充数据。

您还需要一个数据表的 id:

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

在您的 Button 中,您需要更新表格:

<p:commandButton value="Update my table" actionListener="#{allot.handleBatch}" update="table" ...
于 2013-07-04T14:44:18.140 回答