Primefaces DataTable过滤和RowSelection不起作用
|
我是PrimeFaces的新手。我正在用它来编码Saas应用程序的前端。我正在使用primefaces数据表来显示客户列表。我需要对值进行排序和过滤。当在数据表上选择一行时,我还需要填充另一个小部件。排序有效,但过滤和选择无效。以下是Bean和Faces页面的代码片段。我正在使用PrimeFaces 2.2.1和JSF 2.0.2。
<html xmlns=\"http://www.w3c.org/1999/xhtml\"
xmlns:h=\"http://java.sun.com/jsf/html\"
xmlns:f=\"http://java.sun.com/jsf/core\"
xmlns:p=\"http://primefaces.prime.com.tr/ui\">
<h:head></h:head>
<h:body>
<h:form>
<p:growl id=\"growl\" showDetail=\"true\" />
<p:layout fullPage=\"true\">
<!-- Top Tabbed Panel -->
<p:layoutUnit position=\"top\" id=\"main\" width=\"600\" resizable=\"false\">
<center><h3>SAAS Admin Tool</h3></center>
<p:tabView effect=\"opacity\" effectDuration=\"normal\" collapsible=\"true\" >
<p:tab title=\"Customer\">
<!-- Start of customer datatable -->
<p:dataTable var=\"customer\" value=\"#{customerBean.customers}\" paginator=\"true\" selection=\"#{customerBean.selectedCustomer}\"
selectionMode=\"single\" onRowSelectUpdate=\"custList\" onRowSelectComplete=\"custTest.show()\" id=\"custList\" widgetVar=\"custList\">
<f:facet name=\"header\">
List of Customers
<p:outputPanel>
<p:commandButton value=\"+\" type=\"button\" onclick=\"addCustDlg.show()\"/>
</p:outputPanel>
</f:facet>
<p:column sortBy=\"#{customer.id}\" filterBy=\"#{customer.id}\" update=\":custList\" headerText=\"ID\">
<h:outputText value=\"#{customer.id}\"/>
</p:column>
<p:column sortBy=\"#{customer.name}\" filterBy=\"#{customer.name}\" headerText=\"NAME\" filterMatchMode=\"contains\">
<p:cellEditor>
<f:facet name=\"output\">
<h:outputText value=\"#{customer.name}\"/>
</f:facet>
<f:facet name=\"input\">
<p:inputText value=\"#{customer.name}\"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy=\"#{customer.description}\" filterBy=\"#{customer.description}\" headerText=\"DESCRIPTION\">
<p:cellEditor>
<f:facet name=\"output\">
<h:outputText value=\"#{customer.description}\"/>
</f:facet>
<f:facet name=\"input\">
<p:inputText value=\"#{customer.description}\"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy=\"#{customer.signupDate}\" filterBy=\"#{customer.signupDate}\" headerText=\"SIGN UP DATE\">
<h:outputText value=\"#{customer.signupDate}\"/>
</p:column>
<p:column sortBy=\"#{customer.validUntil}\" filterBy=\"#{customer.validUntil}\" headerText=\"EXPIRY DATE\">
<p:cellEditor>
<f:facet name=\"output\">
<h:outputText value=\"#{customer.validUntil}\"/>
</f:facet>
<f:facet name=\"input\">
<p:inputText value=\"#{customer.validUntil}\"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column sortBy=\"#{customer.status}\" filterBy=\"#{customer.status}\" headerText=\"STATUS\">
<p:cellEditor>
<f:facet name=\"output\">
<h:outputText value=\"#{customer.status}\"/>
</f:facet>
<f:facet name=\"input\">
<p:inputText value=\"#{customer.status}\"/>
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText=\"CREATION DATE\" sortBy=\"#{customer.creationDate}\" filterBy=\"#{customer.creationDate}\">
<h:outputText value=\"#{customer.creationDate}\"/>
</p:column>
<p:column headerText=\"LAST UPDATE DATE\" sortBy=\"#{customer.lastUpdateDate}\" filterBy=\"#{customer.lastUpdateDate}\">
<h:outputText value=\"#{customer.lastUpdateDate}\"/>
</p:column>
<p:column headerText=\"Options\">
<p:rowEditor/>
</p:column>
</p:dataTable>
<!-- End of dataTable (customer datatable) -->
<!-- Customer Details Tabbed Panel-->
<p:tabView effect=\"opacity\" effectDuration=\"normal\" id=\"custTab\" widgetVar=\"custTab\">
<p:tab title=\"Lines\">
lines info..
</p:tab>
<p:tab title=\"LineCards\">
Linecards..
</p:tab>
</p:tabView>
<!-- END of customer details tabbed view -->
</p:tab>
<p:tab title=\"Deployment\">
<h:panelGrid columns=\"2\" cellpadding=\"10\">
<h:outputText value=\"software\"/>
</h:panelGrid>
</p:tab>
<p:tab title=\"Maintainence\">
<h:panelGrid columns=\"2\" cellpadding=\"10\">
<h:outputText value=\"test.\"/>
</h:panelGrid>
</p:tab>
<p:tab title=\"Audit Trail\">
<h:panelGrid columns=\"2\" cellpadding=\"10\">
<h:outputText value=\"Hardware Summary\"/>
</h:panelGrid>
</p:tab>
</p:tabView>
</p:layoutUnit>
<!-- DIALOGs -->
<p:dialog header=\"Add Customer\" widgetVar=\"addCustDlg\" id=\"addCustDlg\" resizable=\"false\" width=\"420\" onCloseUpdate=\"custList\">
<h:panelGrid columns=\"2\">
<h:outputLabel value=\"Name:\"/>
<p:inputText value=\"#{customerBean.newCustomer.name}\" required=\"true\"/>
<h:outputLabel value=\"Description:\"/>
<p:inputText value=\"#{customerBean.newCustomer.description}\" required=\"true\"/>
<h:outputLabel value=\"Sign Up Date:\"/>
<p:inputMask value=\"#{customerBean.signDate}\" mask=\"99/99/2099\"/>
<h:outputLabel value=\"Expiry Date:\"/>
<p:inputMask value=\"#{customerBean.exDate}\" mask=\"99/99/2099\"/>
<h:outputLabel value=\"Status:\"/>
<p:inputText value=\"#{customerBean.newCustomer.status}\" required=\"true\"/>
<p:commandButton value=\"Submit\" oncomplete=\"addCustDlg.hide();\" actionListener=\"#{customerBean.addCustomer}\" update=\":custList\"/>
</h:panelGrid>
</p:dialog>
<p:dialog header=\"customer info\" widgetVar=\"custTest\" id=\"custTest\" closable=\"true\">
<h:outputLabel value=\"Name: #{customerBean.selectedCustomer.name}\"/>
</p:dialog>
<!-- Save and Reset buttons -->
<p:layoutUnit position=\"bottom\" id=\"buttons\" height=\"75\">
<center>
<p:commandButton value=\"Save Changes\" actionListener=\"#{customerBean.save}\" update=\"growl\"/>
<p:commandButton value=\"Reset\" actionListener=\"#{customerBean.reset}\" update=\"growl\"/>
</center>
</p:layoutUnit>
</p:layout>
</h:form>
</h:body>
</html>
Bean代码:
import java.io.Serializable;
import java.sql.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import com.assia.saas.dao.AbstractSearchDAO;
import com.assia.saas.dao.EntityManagerHelper;
import com.assia.saas.entities.Customer;
@ManagedBean(name=\"customerBean\")
@ViewScoped
public class CustomerBean implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
AbstractSearchDAO<Customer> custDao = new AbstractSearchDAO<Customer>() {
@Override
protected Class<Customer> getEntityClass() {
return Customer.class;
}
@Override
protected Customer getEntityReference(Customer entity) {
return getEntityManager().getReference(Customer.class, entity.getId());
}
};
List<Customer> customers = new ArrayList<Customer>();
private Customer selectedCustomer = new Customer();
private Customer newCustomer;
private String signDate;
private String exDate;
/**
* @return the signDate
*/
public String getSignDate() {
return signDate;
}
/**
* @param signDate the signDate to set
*/
public void setSignDate(String signDate) {
this.signDate = signDate;
}
/**
* @return the exDate
*/
public String getExDate() {
return exDate;
}
/**
* @param exDate the exDate to set
*/
public void setExDate(String exDate) {
this.exDate = exDate;
}
/**
* @return the newCustomer
*/
public Customer getNewCustomer() {
return newCustomer;
}
/**
* @param newCustomer the newCustomer to set
*/
public void setNewCustomer(Customer newCustomer) {
this.newCustomer = newCustomer;
}
public CustomerBean(){
customers = custDao.findAll(null);
newCustomer = new Customer();
}
public void save(){
//TODO: CODE METHOD
}
public void reset(){
//TODO: Code Method
}
/**
* @return the customers
*/
public List<Customer> getCustomers() {
return customers;
}
/**
* @param customers the customers to set
*/
public void setCustomers(List<Customer> customers) {
this.customers = customers;
}
/**
* @param selectedCustomer the selectedCustomer to set
*/
public void setSelectedCustomer(Customer selectedCustomer) {
this.selectedCustomer = selectedCustomer;
}
/**
* @return the selectedCustomer
*/
public Customer getSelectedCustomer() {
return selectedCustomer;
}
public void addCustomer(ActionEvent event) throws ParseException{
Date date = new Date(Calendar.getInstance().getTimeInMillis());
newCustomer.setCreationDate(date);
newCustomer.setLastUpdateDate(date);
DateFormat formatter;
formatter = new SimpleDateFormat(\"MM/dd/yyyy\");
java.sql.Date sqlDate = new java.sql.Date(formatter.parse(signDate).getTime());
newCustomer.setSignupDate(sqlDate);
sqlDate = new java.sql.Date(formatter.parse(exDate).getTime());
newCustomer.setValidUntil(sqlDate);
EntityManagerHelper.beginTransaction();
custDao.save(newCustomer);
EntityManagerHelper.commit();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(\"Success\", \"New Customer Added\"));
}
}
该代码未在Bean中填充\“ selectedCustomer \”对象。
没有找到相关结果
已邀请:
1 个回复
笛驮型迸
并在支持豆..........
解决方案2:
在这里,selectedCustomer是类型为Customer的实例。