À partir de la spécification EL 2.2 (obtenez celle ci-dessous "Cliquez ici pour télécharger la spécification pour évaluation"):
1.10 Opérateur vide - empty A
L' empty
opérateur est un opérateur de préfixe qui peut être utilisé pour déterminer si une valeur est nulle ou vide.
Évaluer empty A
- Si
A
c'est le cas null
, retourneztrue
- Sinon, si
A
est la chaîne vide, alors retournetrue
- Sinon, si
A
est un tableau vide, alors retournetrue
- Sinon, si
A
est vide Map
, retournetrue
- Sinon, si
A
est vide Collection
, retournetrue
- Sinon retour
false
Donc, compte tenu des interfaces, cela fonctionne sur Collection
et Map
uniquement. Dans votre cas, je pense que Collection
c'est la meilleure option. Ou, si c'est un objet de type javanais, alors Map
. Dans tous les cas, sous les couvertures, la isEmpty()
méthode est utilisée pour le contrôle proprement dit. Sur les méthodes d'interface que vous ne pouvez pas ou ne voulez pas implémenter, vous pouvez lancer UnsupportedOperationException
.
myBean
ouinull
? Seratrue
/false
sera toujours retourné ou peut-il lever une exception?En utilisant la suggestion de BalusC d'implémenter Collection, je peux maintenant masquer mes primefaces en
p:dataTable
utilisant l'opérateur not empty sur mydataModel
qui s'étendjavax.faces.model.ListDataModel
Exemple de code:
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... }
la source