Struts 2 태그
struts 2 태그를 사용하기 위해서는 jsp 페이지에 다음과 같이 taglib를 선언해야 한다.
<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?xml:namespace prefix = o />
<%@ taglib prefix="s" uri="/struts-tags" %>
[0] request.getParameter() request.getAttribute()session.getAttribute() |
<s:property value="#parameters.변수명" /> => request.getParameter()
<s:property value="#request.변수명"> => request.getAttribute()
<s:property value="#session.변수명"> => session.getAttribute()
[1]OGNL(Object Graph Navigation Language) |
OGNL은 자바 객체의 프로퍼티 값을 얻거나 저장하기 위하여 자바 빈들 상의 프로퍼티들을 추적하는 표현식을 다룰 수 있게 한다.
또 한 OGNL은 정적 메서드 또는 인스턴스 메서드를 실행하고, 컬렉션 타입의 데이터 또한 사용할 수 있도록 Lambda 표현식과 같은 진보된 표현식을 제공한다. 또한 OGNL은 XWork 내에서 확장된 풍부한 타입 변환 모델을 제공한다. 또한 OGNL 언어의 기본은 단순하며, 빈의 프로퍼티는 프로퍼티 이름으로 엑세스 된다.
■ 태그의 value속성은 객체를 의미한다
<s:textfield name="id" value="seoul"/> 또는
<s:textfield name="id" value="${seoul}"/>
이라고 하면 value 속성의 seoul은 문자가 아닌 getSeoul() 메서드 호출의 의미가 된다. 따라서 문자 seoul을 의미하고 싶다면
<s:textfield name="id" value="'seoul'"/>또는
<s:textfield name="id" value="{'seoul'}"/>
라고 표현해야 한다.
■ # 사용(외부 참조)
스 트럿츠2는 OGNL표현식을 사용하기위해 최상위 컨텍스트 맵를 사용한다. 이 컨텍스트 맵에는 어플리케이션, 세션, ValueStack(루트), request, 파라미터 등의 객체가 저장되고 여기서 액션은 ValueStack 즉 루트 객체에 있기 때문에 루트 객체에서는 #없이 프로퍼티를 참조할 수 있다. 그러나 다른 객체 예를 들어 session 객체의 프로퍼티를 참조하려면 #을 사용해야한다.
<s:property value="#session.myid"/> 또는
<s:property value="#session['myid']"/>
예) OGNL을 사용해서 요청 파라미터, 요청, 세션을 참조 하는 법
#parameters['key'] or #parameters.key
-> request.getParameter("key") 의 반환 값과 동일
#request['key'] or #requuest.key
-> request.getAttribute("key")의 반환 값과 동일
#session['key'] or #session.key
-> session.getAttribute("key")의 반환 값과 동일
■ collections 객체(map, list, set) 사용 시 OGNL
<s:select name="name" list="{'aa','bb','cc'}" value="%{'bb'}"/>
이것은 문자열 aa,bb,cc 를 포함하는 리스트를 생성하고 기본값으로 bb를 사용한다는 의미 이다.
<s:select name="name" list="#{'key1':'aa','key2':'bb','key3':'cc'}"/>
이것은 key1 라는 키 값에 aa라는 value 값을 저장 한다는 의미 이다.
[2] 컨트롤 태그(일반) |
■ if , else , elseif
⋅ 의미
기본적 if구문
⋅ 사용 예
<s:if test="a==1">a는 1이다
</s:if>
■ append
⋅ 의미
여러 리스트를 하나의 iterator로 묶어줌(첫 번째 리스트에 두 번째 리스트가 합쳐진 형태)
⋅ 사용 예
<s:append id = "totalList">
<s:param value="%{list1}"/>
<s:param value="%{list2}"/>
</s:append>
<s:iterator value="%{totalList}">
<s:property/>
</s:iterator>
■ generator
⋅ 의미
val 속성 값으로
iterator를 생성
⋅ 속성
separator : 구분자
count : 최대 요소 수
⋅ 사용 예
<s:generator separator=","val="%{'aaa,bbb,cc,dd'} count="3">
<s:iterator>
<s:property/>
</s:iterator>
</s:generator>
cf) 결과 : aaa,bbb,ccc
■ merge
⋅ 의미
여러 리스트를 하나의 iterator로 묶음(첫 번째 리스트의 첫 번째 아이템, 두 번째 리스트의 두 번째 아이템, 다시 첫 번째 리스트의 두 번째 아이템 순서로 합쳐짐)
⋅ 사용 예
<s:merge id= "totalList">
<s:param value="%{lsit1}"/>
<s:param value="%{list2}"/>
</s:merage>
<s:iterator value="%{totalList}">
<s:property />
</s:iterator>
■ sort
⋅ 의미
태그속성으로 설정되는 comparator를 사용하여 목록을 정렬하는 태그. 예를 들어 list 에 {b,a,c}를 저장하고 comparator를 사용 정열하면 {a,b,c}가 됨
⋅ 사용 예
<s:sort comparator="myComparator" source ="list">
<s:iterator>
<s:property/>
</s:itertator>
</s:sort>
■ subset
⋅ 의미
iterator의 서브셋을 취하는 태그
⋅ 속성
count : subset iterater에 담을 요소의 수
start : 시작 인덱스 값(0부터)
decider : 메서드 사용 시 메서드 명
⋅ 사용 예
<s:subset source="list" count="3" start ="3">
<s:iterator>
<s:property/>
</s:iterator>
</s:subset>
[3] 데이터 태그 (일반) |
■ a
⋅ 의미
HTML 의 <a href =""/>
⋅ 사용 예
<s:url id="test" action="link">
</s:url>
<s:a href="${test}">링크</s:a>
■ action
⋅ 의미
jsp에서 직접 액션을 호출
⋅ 속성
executeResult : 리절트 실행여부
⋅ 사용 예
<s:action name="action1" executeResult="true"/>
■ bean
⋅ 의미
자바빈 규정에 따라 클래스를 인스턴스화
⋅ 사용 예
<s:bean name="com.bean.User" id="user">
<s:param name="first" value="'a'"/>
<s:param name="last" value="'b'"/>
first : <s:property value="first"/>
last : <s:property value="last"/>
</s:bean>
<br/>
first :<s:property value="#user.first"/>
last : <s:property value="#user.last"/>
■ date
⋅ 의미
date형식 가져오기
⋅ 사용 예
<s:date name="currDate" format="yyyy-MM-dd hh:mm:ss"/>
■ debug
⋅ 의미
debug 하이퍼 링크를 출력. 링크를 클릭하면 ValueStack의 내용과 스택 컨텍스트 내용을 출력
⋅ 사용 예
<s:debug/>
■ i18n
⋅ 의미
리소스 번들을 얻고 그 내용을 벨류 스택에 저장한다(미리 리소스 번들에 "abc= 가나다" 라고 만들어 둠)- 국제화
⋅ 사용 예
<s:i18n name="example.i18n.myBundle">
리소스 번들예제
<s:text name= "abc"/>
</s:i18n>
■ include
⋅ 의미
jsp include 역활
⋅ 사용 예
<s:include value="includeTag1.jsp">
<s:param name="a" value="'abc'"/>
</s:indclude>
■ param
⋅ 의미
파리미터로 사용
⋅ 사용 예
<s:param name="a" value="'a'"/>
<s:param name="a">a</s:param>
■ push
⋅ 의미
ValueStack 안에 값을 저장 한다
⋅ 사용 예
<s:push value= "user">
first:<s:property value="first"/>
se<s:property value="se"/>
</s:push>
■ set
⋅ 의미
특정 스코프의 변수에 값을 할당
⋅ 사용 예
<s:set name="a" value="user.first" scope="session"/>
<s:porperty value="#a"/>
■ ext
⋅ 의미
i18n 텍스트 메시지를 렌더링
■ url
⋅ 의미
url 생성. param 태그 사용가능
⋅ 사용 예
<s:url id="a" value="/jsp/a.jsp">
<s:param name="id" value="'a23'"/>
</s:url>
■ propery
⋅ 의미
프로퍼티값을 출력. value값을 지정안하면 ValueStack의 맨 위의 값을 취함
- default (String) - 값이 널일때 기본값으로 사용할것이 있는지 정함 스트링형
- escape (Boolean) - HTML형식으로 보여줄지 정함 기본값은 true
- value (Object) - 값을 보여줌 obejct타입
⋅ 사용 예
<s:property value="a"/>
<s:property />
[4] 폼 태그 (사용자) |
■ checkbox
⋅ 의미
html checkbox로 랜더링
⋅ 사용 예
<s:checkbox name="a" value="%{aa}"/>aa
<s:checkbox name="b" value="%{bb}"/>bb
■ checkboxlist
⋅ 의미
list를 체크박스 시리즈로 생성
⋅ 사용 예
<s:checkboxlist name="check1" list="list1"/>
■ combobox
⋅ 의미
html text와 select를 그룹으로 제공
⋅ 사용 예
<s:combobox name="checkedFruit" list="{'apple','grape','orange'}"/>
<s:combobox name="checkedFlower" list="%{#{'1':'rose','2':'cosmos','3':'lily'}}"/>
<s:combobox name="checkedTraffic" list="mapTraffics"/>
■ datetimepicker
⋅ 의미
datetimepicker 요소를 렌더링(달력 출력). 헤드에 ajax 설정
⋅ 사용 예
<head>
<s:head theme="ajax">
</head>
<s:datetimepicker name="birthday"/>
■ doubleselect
⋅ 의미
첫 번째 리스트 선택에 따라 두 번째 리스트 내용이 선택 되어 나온다.
⋅ 사용 예
<s:doubleselect name="list1" list="{'1",'2'}" doubleName="list2"
doubleList="%{top=='1'? {'a','b'}:{'가','나'}}"/>
■ head
⋅ 의미
head 섹션의 부분을 렌더링한다.
⋅ 사용 예
<s:head theme="ajax"/>
■ file
⋅ 의미
html file요소
⋅ 사용 예
<s:file name="upload"/>
■ form
⋅ 의미
html form 요소
⋅ 사용 예
<s:form action="admin" theme="simple">
</s:form>
■ hidden
⋅ 의미
html hidden
⋅ 사용 예
<s:hidden name="property" value="some"/>
■ label
⋅ 의미
html label
⋅ 사용 예
<s:label>예제 </s:lable>
■ optontransferselect
⋅ 의미
2개의 select 컴포넌트 사이에 option을 이동할 수 있는 컴포넌트를 생성
⋅ 사용 예
<s:head theme="ajax"/>
<s:optiontransferselect headerKey="" headerValue="--please select--" emptyOption="true"
leftTitle="Fruit" rightTilte="Car" name="checkedList" list="listFruit" doubleHeaderKey=""
doubleHeaderValue="--please select--" doubleEmptyOption="true"
doubleName="checkedList2" doubleList="listCar"/>
■ optgroup
⋅ 의미
select 태그 내에 삽입할 optgroup 컴포넌트를 생성
⋅ 사용 예
<s:head theme="ajax" />
<s:form theme="ajax"><s:select label="my selection" name="myselection"
value="{%{'popeye'}}" list="%{#{'sup':'sub','sp':'sp' }}"><s:optgroup label="'adult"
list="%{#{'sou':'sou'}}"/><s:optgroup label="fruit"
list="%{#{'o':'orange','a':'apple' }}"/></s:select></s:form>
■ password
⋅ 의미
html password
⋅ 사용 예
<s:password name="pass" size="10" maxlength="15"/>
■ reset
⋅ 의미
reset 버튼
⋅ 사용 예
<s:reset value="reset"/>
■ select
⋅ 의미
html select
⋅ 사용 예
<s:select headerKey="" headerValue="선택" name="check1" list="list1" listKey="id"
listValue="name"/>
■ submit
⋅ 의미
submit 버튼
⋅ 사용 예
<s:submit />
⋅ method 접두어
Action class에 execute() 메서드와 cancel() 메서드가 존재 하는 경우 jsp에서,
<s:form action="actionname" theme="simple">
<s:textfield name="name"/>
<s:submit value ="전송"/>
<s:submit name="method:cancel" value="취소"/>
</s:form>
이런 경우 두 submit 버튼에 각각 execute() 와 cancel() 메서드를 바로 호출해서 쓸 수 있다.
⋅ action 접두어
만약 cancel submit에 다른 액션(goaction 이라고 가정)의 메서드를 호출하고자 한다면
<s:form action="actionname" theme="simple">
<s:textfield name="name"/>
<s:submit value ="전송"/>
<s:submit name="action:goaction" value="취소"/>
</s:form>
이런 경우 goaction 의 execute() 메서드가 호출 된다
⋅ redirect 접두어
<s:form action="actionname" theme="simple">
<s:textfield name="name"/>
<s:submit value ="전송"/>
<s:submit name="redirect:www.google.com" value="취소"/>
</s:form>
이렇게 하면 내부적으로 ServeltRedirectResult를 사용하여 www.google.com으로 리다이렉트 된다.
■ textarea
⋅ 의미
html textarea
⋅ 사용 예
<s:textarea name="test" theme="simple" cols="90"/>
■ textfield
⋅ 의미
html text
⋅ 사용 예
<s:textfield name="test"/>
■ token
⋅ 의미
폼의 이중 submit 방지(더블클릭 등)
⋅ 사용 예
<s:token/>
<s:submit/>
■ updownselect
⋅ 의미
셀렉트박스의 요소를 위, 아래로 이동할수 있는 버튼을 가진 select 컴포넌트를 생성
⋅ 사용 예
<s:updownselect headerKey="" headerValue="선택" name="check" list="list1" listKey="id"
listValue="name" moveDownLabel="move down" moveUpLabel="move up"
selectAllLabel="select all"/>
[5] non 폼 태그 (사용자) |
넌폼 태그(Non-Form Tag)는 폼에 종속되지 않고 단독으로 처리할 수 있는 태그들로 구성 되며, 비동기적인 비즈니스 로직을 수행할 수 있는 Ajax 기능을 포함한 태그들이 포함 하고 있다.
예 를 들면, <s:div/>, <s:tabbedPanel/>, <s:tree/> 등을 대표로 들 수 있다. 일반적인 웹 애플리케이션에서 Ajax를 구현하기 위하여 XmlHttpRequest를 처리하기 위한 자바스크립트 코드가 필요하고, 서버 측에서 클라이언트로 비즈니스 데이터를 XML로 변환하여 전송해야하며 전송된 XML데이터를 DHTML을 이용하여 동적으로 컴포넌트를 구성해야 한다 하며, XML 데이터를 한다.
그 러나 스트럿츠 2 프레임워크에서 제공하는 ajax 테마와 몇 몇 태그들을 이용하면 스트럿츠 2의 다른 개발과 동일한 방식으로 JSP와 Action 클래스, 비즈니스 로직을 구현하면서도 이를 가능하게 해주는 매우 강력한 기능을 제공한다.
■ actionerror
⋅ 의미
액션에 오류가 있으면 actionerror를 렌더링. 액션클래스에 『addActionError("에러메시지");』설정
⋅ 사용 예
<s:actionerror />
■ actionmessage
⋅ 의미
actionerror와 같이 사용
⋅ 사용 예
<s:actionmessage/>
■ component
특정 템플릿을 사용하는 커스텀 ui 위젯을 렌더링 한다.
■ div
ajax 테마를 사용할 때 div 태그는 전체 페이지를 갱신하지 않고 해당 내용을 갱신하기 위하여 현재 페이지로부터 원격호출을 제공한다.
■ fielderrror
필드에러 렌더링
■ table
모델링 테이블을 렌더링하기 위한 태그
■ tablePanel
tabbedpanel 위젯은 AJAX 컴포넌트이다. 각 탭은 로컬 또는 리모트 컨텐츠가 될 수 있다 (사용자가 탭을 선택할 때 갱신된다 )
■ tree
AJAX를 지원하는 트리 위젯을 렌더링 한다.
■ treenode
AJAX를 지원하는 트리 위젯 안의 트리 노드를 렌더링 한다
http://cafe.naver.com/getlength/65 에서 퍼왔습니다.
'JSP & WEB & Ajax' 카테고리의 다른 글
Extjs Grouping Header Grid Plugins [펌] (0) | 2009.11.24 |
---|---|
Extjs 기본 사용법 - JsonReader를 이용한 Grid [펌] (0) | 2009.11.24 |
유용한 자바스크립트 함수 (0) | 2009.09.21 |
Session 가져오는 법 - struts2 (0) | 2009.09.16 |
struts2 Action에서 HttpServletRequest, HttpServletResponse 사용방법 (0) | 2009.08.24 |