我正在按照此链接中的示例使用 Spring、JSF、Hibernate 开发应用程序。
当我在数据库中填充一些值运行此代码时,它应该具有数据表标题名称以及检索到的所有行。但是当数据库中没有值并且当我运行代码时,这不应该显示数据表标题名称。仅当从数据库中检索到某些值而不是在启动期间才应显示数据表标题名称。我该怎么做呢?
向您的托管 bean添加一个integer
获取列表大小的属性
private int sizeOfTable;
public int getSizeOfTable()
{
return customerBo.findAllCustomer().size();
}
public int setSizeOfTable(int sizeOfTable(int sizeOfTable)
{
this.sizeOfTable = sizeOfTable;
}
rendered
您可以按属性控制数据表。
<h:dataTable value="#{customer.getCustomerList()}" var="c" rendered="#{customer.sizeOfTable == 0}"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row"
>
如果数据表的大小为 0,那么数据表将不会被渲染。如果您只想隐藏标题,您可以将rendered
值添加到h:column
但是,为单个计数操作检索数据库行。这不是一个好习惯。您应该根据需要处理数据库访问。数据库访问是计算机的 IO 操作,是操作中成本最高的部分。
我的建议是将列表存储在数据属性中并对其进行处理。
private List<Customer> customerList;
public List<Customer> getCustomerList(){
if(customerList == null)
{
customerList = customerBo.findAllCustomer();
}
return customerList;
}
你应该相应地编辑你的 size 属性。
public int getSizeOfTable()
{
return customerList.size();
}
只需让检查数据模型的rendered
属性<h:dataTable>
是否为empty
.
<h:dataTable value="#{customer.customerList}" ... rendered="#{not empty customer.customerList}">
无需像其他答案所建议的那样,用不相关的属性使模型混乱。