Из спецификации EL 2.2 (см. Ниже «Щелкните здесь, чтобы загрузить спецификацию для оценки»):
1.10 Пустой оператор - empty A
empty
Оператор является оператором префикс , который может быть использован для определения , если значение равно нулю или пусто.
Оценить empty A
- Если
A
есть null
, вернутьtrue
- В противном случае, если
A
это пустая строка, вернутьtrue
- В противном случае, если
A
это пустой массив, вернутьtrue
- В противном случае, если
A
пусто Map
, вернитеtrue
- В противном случае, если
A
пусто Collection
, вернитеtrue
- В противном случае верните
false
Так что, учитывая интерфейсы, работает Collection
и Map
только. В твоем случае, думаю, Collection
это лучший вариант. Или, если это объект, похожий на Явабию, тогда Map
. В любом случае, этот isEmpty()
метод используется для фактической проверки. На методы интерфейса, которые вы не можете или не хотите реализовывать, вы можете бросить UnsupportedOperationException
.
myBean
естьnull
? Будет лиtrue
/ по-false
прежнему возвращаться или может возникнуть исключение?Используя предложение BalusC о реализации Collection, теперь я могу скрыть свои начальные буквы,
p:dataTable
используя не пустой оператор на моем,dataModel
который расширяетjavax.faces.model.ListDataModel
Пример кода:
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... }
источник