使用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页面中没有显示数据。
任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
在这种情况下,通常使用“提交”按钮。
您还需要的是dataTable的ID:
<p:dataTable id="table" ...
在你的Button中你需要更新表:
<p:commandButton value="Update my table" actionListener="#{allot.handleBatch}" update="table" ...