Tapestry jumpstart에도 잘 나와있지만, 개인적으로 정리하면서 해야 더 잘 이해하므로, 정리..
이 블로그를 보고 계신분들은 아마, tapestry jumpstart를 보시는게
더 이해가 빠를 수 있다는걸 알려드립니다..ㅋㅋ
0) Select의 기본적 특징
: Tapestry의 Core Component이며, AbstractField를 상속 받았기때문에
Tapestry Form으로 꼭 감싸줘야한디~
1) Select Model 구성 – Model Type’s
1. String (literal) : 단순 문자나열이 Option으로 표현 됨.
*model=”literal:문자열…”
2. Enum : Enum정의된 값들이 Option으로 표현 됨.
*t:id=”Property명” , Model을 넣어주면 안됨.
3. String Map : label-key, value-value
model="literal:R=Red,G=Green,B=Blue"
4. enum + properties : Enum 값
5. SelectModelFactory 사용
: List<T>형태를 SelectModel형태로 변환해줌.
ex)
@Inject private SelectModelFactory selectModelFactory; selectModelFactory.create(List, “Options나타낼Property”); return SelectModel;
*Option의 Label을 수정시에는 page객체명.properties를 수정한다.
“selectId”-blankLabel=공백시 나타낼 라벨명
6. SelectModel 직접구현 – AbstractSelectModel 구현.
ex)
.. extends AbstractSelectModel
@Override
public List getOptions(){
List options = new ArrayList (); //persons의 경우 생성자를 통해 입력받구
for(Person person : persons){
options.add(new OptionModelImpl(
person.getFirstName()+” “+person.getLastName(),
person)
);
}
return options;
}
2) Select Encoder
: Select표현을 단순 문자열(string), Enum으로 표현 할 수 있지만
좀 복잡한 객체형식으로 표현 하려 할 경우. Encoder개념이 필요함.
-Encoder Using CustomValueEncoder
public String toClient(T value);
public T toValue(String id);