#####################################
Tapestry 처음부터 다시시작하기..
모든걸 내려놓고 다시시작..
#####################################
내가 생각하는 Tapestry 장점.
- 쉬운 커스텀 컴포넌트 개발.
- Page(HTML)과 Java의 강한 결합(단점이 될 수도 있음)
- Page(Template)개념과 Logic(Java)의 분리됨. - 유지보수 측면에서 분리됨.
자바스크립트를 크게 보지 않은 이유도 있음.
브라우저별 다른 스크립트처리
Tapestry IOC(자체 IOC제공)
######################################
Tapestry 기초
######################################
tml(Template)과 java(Business Logic)으로 나누는 것을 중점.
Java는 필수지만, template는 옵션임.
*layout 개념.
*Tapestry 5.4 Version의 Bootstrap 설정.
* "" 의 RequireJS 설정.
*Event 처리, Event 버블링. +Client Event 제어할 수 있음.
1) AlterManager 사용법
<java>
@Inject
private AlertManager alertManager;
alertManager.info/warn/success/error -> 단순 문자열만 인식.
<tml>
<t:alerts/>
2) require JS 적용.
3) Page이동시
<t:pagelink t:page="Page객체">refresh</t:pagelink>
4) Expression
@Property , get/set변수 -> ${접근가능.}
5) form 관련 컴포넌트 사용시에는 반드시 form태그로 감싸줘야한다.
왜냐하면, event는 항상 form을 통해서 일어나기 때문.
ex)
<t:form t:id="userInputForm">
..
</t:form>
t:value는 page(template)와 java의 결합이 이루어짐. 즉, java에도 해당 property가 있어야함.
6) Java(BL)에서 return 타입에 따른 차이.
null => 재
7) Event Handler
@OnEvent(value="submit", component="ComponentID")
onSubmitFrom"CompnentID"
8) Inject Page
@InjectPage
PageClass pc;
*Page Class를 한번 생성하고 재사용하는지?
Pool관리를 하고 있다고함.
64 ( 75 / 280 )
9) Session save per Request.
@Persist - HttpSession associated with a specific User
페이지가 이동해도 값이 유지됨. 왜냐 세션에 저장하니까~
---------------------------------------------------------------------
Passivate - onPassivate
: 이놈이 먼저뜸..;; 넘겨받을거를 정의할 수 있다는 말인가?
: Passiavate가 넘겨주는 return을 Activate가 받아서 처리.
Activate - onActivate
: 페이지가 활성화 되면.. Render후를 말하는듯..
: 직접적으로 해당 페이지를 Render할 일을 정의
---------------------------------------------------------------------
10) Class단에서 컴포넌트 제어도 가능
@Component(parameters = {"page=Another"})
private PageLink theLink;
11) ApplicationState -> SessionState
######################################################################
Basic Form Component -
######################################################################
1) Textfield, passwordfield, label, pagelink, actionlink, loop, output, checkbox, radiogroup, if, submit, select
1. label , textfield
<t:label t:for="userName">Label</t:label>
<input type="text" t:id="userName" t:type="textfield" t:value="userName"/>
2. output
<t:output t:format="dateFormat" t:value="celebrity.dateOfBirth"/>
3. loop
<tag t:type="loop" t:source="sources" t:value="변수">
4. actionlink
<a href="#" t:type="actionlink" t:context="celebrity.id" t:id="detailsLink">
5. pagelink - 페이지로 이동.
<a href="#" t:type="pagelink" t:page="details" t:context="celebrity.id">
----------------------------------------------------------------------------
Select 컴포넌트
----------------------------------------------------------------------------
<t:select t:model="countries" t:value="contry"/>
EnumSelectModel
@Inject
private Messages messages;
public SelectModel getCountries(){
return new EnumSelectModel(Country.class, messages);
}
@Persist
@Property
private Country country;
'Workspace > Web Dev' 카테고리의 다른 글
[Tapestry 5] Select Component - EnumSelectModel(1) (0) | 2013.11.04 |
---|---|
Tapestry Select 컴포넌트 개발. (0) | 2013.10.16 |
JDBC 사용시 - Dynamic컬럼명 구하기, 컬럼갯수 확인하기. (0) | 2013.09.24 |
Spring JSON View 구현하기(2) - @ResponseBody (0) | 2013.09.24 |
Spring JSON View 구현하기(1) - ResponseEntity (2) | 2013.09.24 |