#####################################

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 카테고리의 포스트를 톺아봅니다