카테고리 없음

Struts 2 Tags example

Soul-Learner 2014. 9. 2. 17:38

Struts 2 태그 사용 예


Reference : http://struts.apache.org/release/2.3.x/docs/tag-reference.html


Struts 2 태그에는 Data, Control, Form, Ajax 태그 등이 있으며 몇가지 유용한 태그를 중심으로 사용예를 알아 보겠습니다


Data 태그 중 주요 태그 사용예


Action Tag

jsp 에서 액션을 바로 호출하고 그 결과 페이지도 현재 페이지에 추가된다. executeResult 속성 값에 따라서 결과 페이지가 추가될 수도 안될 수도 있다

결과 페이지가 현재 페이지에 포함될 때는 결과 페이지의 모든 html 코드가 그대로 포함되는 점에 주의한다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>
<h1>Success.jsp</h1>
<s:action name="login" namespace="/mem" executeResult="true">
	JSP에서 액션을 호출하여 실행한 결과
</s:action>
</body>
</html>



include Tag

다른 jsp 페이지 실행하고 그 결과를 현재 페이지에 추가한다

삽입되는 페이지가 현재 페이지에 포함될 때는 모든 html 코드가 그대로 포함되는 점에 주의한다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>
<h1>Success.jsp</h1>

<s:include value="info.jsp" />


<s:include value="info.jsp">
   <s:param name="param1" value="value2" />
   <s:param name="param2" value="value2" />
</s:include>


<s:include value="info.jsp">
   <s:param name="param1">value1</s:param>
   <s:param name="param2">value2</s:param>
</s:include>
</body>
</html>


info.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>
<h1>Here is info.jsp</h1>
${param.param1}<br>
${param.param2}<br>
</body>
</html>



Date Tag

아래의 date 태그이 name 속성에 사용된 hiredate 는 액션 클래스의 멤버 변수로 선언되어 있는 변수 이름이며 액션 클래스에 setter, getter 메소드가 있어야 한다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>
입사일 : ${hiredate }<br>
1.<s:date name="hiredate" format="dd/MM/yyyy" /><br>
2.<s:date name="hiredate" format="yyyy/MM/dd" /><br>
2.<s:date name="hiredate" nice="true" /><br>
3.<s:date name="hiredate" /><br>
</body>
</html>


위의 jsp 가 실행된 결과화면

입사일 : Wed Sep 03 11:55:55 KST 2014
1.03/09/2014
2.2014/09/03
2.an instant ago

3.2014. 9. 3 오전 11:55:55



Property Tag

Value Stack의 최상부에 있는 오브젝트의 속성값을 출력한다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>
입사일 <s:property value="hiredate"/><br>
입사일 <s:date name="hiredate"/><br>
</body>
</html>


위의 jsp 가 실행된 결과 화면

입사일 14. 9. 3

입사일 2014. 9. 3 오후 12:13:05



Push Tag

Value Stack의 최상단에 지정한 오브젝트를 올린다

(Method 1) Environment Name: 
<s:property value="environment.name"/><br/>

(Method 2) Environment Name: 
<s:push value="environment">
<s:property value="name"/><br/>
</s:push>

(Method 3) Environment Name:
<s:set name="myenv" value="environment.name"/>
<s:property value="myenv"/>



Set Tag

Scope Object (pageContext, request, session, application ) 나 Action 오브젝트의 속성값을 설정할 수 있다

<s:set name="myenv" value="environment.name"/>
<s:property value="myenv"/>



Url Tag

주로 링크의 타겟 주소(URL)를 생성하는 용도로 사용한다

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Struts 2 Tags test</title>
</head>
<body>

<s:url value="/mem/login.action" var="link1">
    <s:param name="id">UserID</s:param>
</s:url>

<s:url action="/mem/login" var="link2">
    <s:param name="id">UserID</s:param>
</s:url>

<a href="<s:property value='#link1'/>">
	<s:property value='#link1'/>
</a>
</body>
</html>




Control Tag 중 주요한 태그의 사용예


If ~ elseif ~ else

아래의 코드에서 사용된 name 은 액션의 멤버변수이며 setter, getter 메소드가 필요하다

<s:if test="name=='Mike'">
   You have selected 'Mike'. 
</s:if>
<s:elseif test="name=='Jason'">
   You have selected 'Jason'
</s:elseif>
<s:else>
   You have not selected 'Mike' or 'Jason'.
</s:else>



Iterator Tag

아래의 코드에서 사용된 employees 는 List<Employees> 형이며 액션의 멤버변수이다. setter, getter요구됨

<s:iterator value="employees">
	<s:property value="name"/> , 
	<s:property value="dept"/><br/>
</s:iterator>