Struts 2 Tags example
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 가 실행된 결과화면
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 가 실행된 결과 화면
입사일 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>