Ze specyfikacji EL 2.2 (pobierz poniższą „Kliknij tutaj, aby pobrać specyfikację do oceny”):
1.10 Pusty operator - empty A
empty
Operator operator przedrostek, które mogą być wykorzystane do określenia, czy wartość ta jest zerowa lub pusty.
Oceniać empty A
- Jeśli
A
tak null
, wróćtrue
- W przeciwnym razie, jeśli
A
jest pustym ciągiem, a następnie zwracatrue
- W przeciwnym razie, jeśli
A
jest pustą tablicą, a następnie zwracatrue
- W przeciwnym razie, jeśli
A
jest pusta Map
, zwracatrue
- W przeciwnym razie, jeśli
A
jest pusta Collection
, zwracatrue
- W przeciwnym razie wróć
false
Tak więc, biorąc pod uwagę interfejsy, działa tylko Collection
i Map
wyłącznie. W twoim przypadku myślę, że Collection
to najlepsza opcja. Lub, jeśli jest to obiekt podobny do języka Javabean, to Map
. Tak czy inaczej, pod osłonami isEmpty()
metoda jest używana do faktycznej kontroli. W przypadku metod interfejsu, których nie możesz lub nie chcesz zaimplementować, możesz rzucić UnsupportedOperationException
.
myBean
jestnull
? Czytrue
/false
nadal zostanie zwrócony, czy może zgłosić wyjątek?Korzystając z sugestii BalusC, aby zaimplementować Collection, mogę teraz ukryć moje primefaces
p:dataTable
za pomocą operatora niepustego na moim,dataModel
który extendsjavax.faces.model.ListDataModel
Przykład kodu:
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... }
źródło