Dari spesifikasi EL 2.2 (dapatkan yang di bawah ini "Klik di sini untuk mengunduh spesifikasi untuk evaluasi"):
1.10 Operator Kosong - empty A
The empty
operator adalah operator awalan yang dapat digunakan untuk menentukan apakah sebuah nilai adalah null atau kosong.
Untuk mengevaluasi empty A
- Jika
A
yaitu null
, kembalitrue
- Jika tidak, jika
A
string kosong, maka kembalikantrue
- Jika tidak, jika
A
adalah larik kosong, maka kembalikantrue
- Jika tidak, jika
A
kosong Map
, kembalikantrue
- Jika tidak, jika
A
kosong Collection
, kembalikantrue
- Jika tidak kembali
false
Jadi, mengingat antarmukanya, ia bekerja Collection
danMap
hanya. Dalam kasus Anda, saya pikir Collection
adalah pilihan terbaik. Atau, jika itu adalah benda mirip Jawa, maka Map
. Bagaimanapun, di bawah selimut, isEmpty()
metode ini digunakan untuk pemeriksaan yang sebenarnya. Pada metode antarmuka yang tidak bisa atau tidak ingin Anda terapkan, Anda bisa melempar UnsupportedOperationException
.
myBean
yangnull
? Apakahtrue
/false
masih akan dikembalikan atau dapatkah itu menimbulkan pengecualian?Menggunakan saran BalusC ini menerapkan Koleksi saya sekarang bisa menyembunyikan primefaces saya
p:dataTable
menggunakan operator yang tidak kosong pada sayadataModel
yang memanjangjavax.faces.model.ListDataModel
Contoh kode:
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<Entity> implements Collection<Entity>, SelectableDataModel<Entity>, Serializable { public EntityDataModel(List<Entity> 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<Entity> entitys = (List<Entity>) 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> entity = (List<Entity>) getWrappedData(); return (entity == null) || entity.isEmpty(); } // ... other not implemented methods of Collection... }
sumber