How does EL empty operator work in JSF?

后端 未结 2 420
借酒劲吻你
借酒劲吻你 2020-11-28 05:33

In JSF an component can be rendered or not using the EL empty operator

rendered=\"#{not empty myBean.myList}\"

As I\'ve understood the ope

2条回答
  •  孤城傲影
    2020-11-28 06:21

    Using BalusC's suggestion of implementing Collection i can now hide my primefaces p:dataTable using not empty operator on my dataModel that extends javax.faces.model.ListDataModel

    Code sample:

    import java.io.Serializable;
    import java.util.Collection;
    import java.util.List;
    import javax.faces.model.ListDataModel;
    import org.primefaces.model.SelectableDataModel;
    
    public class EntityDataModel extends ListDataModel implements
            Collection, SelectableDataModel, Serializable {
    
        public EntityDataModel(List data) { super(data); }
    
        @Override
        public Entity getRowData(String rowKey) {
            // In a real app, a more efficient way like a query by rowKey should be
            // implemented to deal with huge data
            List entitys = (List) getWrappedData();
            for (Entity entity : entitys) {
                if (Integer.toString(entity.getId()).equals(rowKey)) return entity;
            }
            return null;
        }
    
        @Override
        public Object getRowKey(Entity entity) {
            return entity.getId();
        }
    
        @Override
        public boolean isEmpty() {
            List entity = (List) getWrappedData();
            return (entity == null) || entity.isEmpty();
        }
        // ... other not implemented methods of Collection...
    }
    

提交回复
热议问题