반응형
EL 빈 연산자는 JSF에서 어떻게 작동합니까?
JSF에서 컴포넌트는 EL 빈 연산자를 사용하거나 사용하지 않을 수 있습니다.
rendered="#{not empty myBean.myList}"
내가 이해했듯이 연산자는 null 검사로 작동하지만 목록이 비어 있는지 확인합니다.
내 사용자 지정 클래스의 일부 개체에 대해 빈 검사를 수행하고 싶습니다. 어떤 인터페이스 또는 인터페이스 일부를 구현해야합니까? 빈 연산자는 어떤 인터페이스와 호환됩니까?
에서 EL 2.2 사양 ( "평가를위한 사양을 다운로드하려면 여기를 클릭하십시오"아래 하나를 얻을) :
1.10 빈 연산자-
empty A
empty
연산자 값이 널 (null) 또는 빈인지 결정하기 위해 사용될 수있는 접두어 연산자이다.평가하려면
empty A
- 만약
A
ISnull
, 반환true
- 그렇지 않으면
A
빈 문자열이면 다음을 반환합니다.true
- 그렇지 않으면,
A
빈 배열이면 다음을 반환합니다.true
- 그렇지 않은 경우
A
빈입니다Map
, 반환true
- 그렇지 않은 경우
A
빈입니다Collection
, 반환true
- 그렇지 않으면 반환
false
따라서, 인터페이스를 고려, 그것은 작동 Collection
하고 Map
만. 귀하의 경우 Collection
에는 최선의 선택 이라고 생각 합니다. 또는 Javabean과 유사한 객체 인 경우 Map
. 어느 쪽이든,이 isEmpty()
방법은 실제 점검에 사용됩니다. 구현할 수 없거나 구현하고 싶지 않은 인터페이스 메서드에서 UnsupportedOperationException
.
난 지금 내 primefaces 숨길 수 있습니다 컬렉션을 구현 BalusC의 제안을 사용하여 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...
}
참고 URL : https://stackoverflow.com/questions/14185031/how-does-el-empty-operator-work-in-jsf
반응형
'Program Tip' 카테고리의 다른 글
Android 호환성 패키지에는 Activity.getFragmentManager ()가 포함되어 있지 않습니다. (0) | 2020.10.07 |
---|---|
본문 텍스트에서 단어 교체 (0) | 2020.10.07 |
MongoDB를 사용하여 하위 문서에서 배열을 필터링하는 방법 (0) | 2020.10.07 |
Hadoop없이 Apache Spark를 실행할 수 있습니까? (0) | 2020.10.07 |
Postgres에서 테이블 (인덱스 포함) 복사 (0) | 2020.10.07 |