반응형
<s:hidden> 태그로 뷰 간 숨겨진 값 전송하는 방식을 예제를 통해 설명해본다.
설명을 위해 예제코드를 만들어봤는데 먼저 흐름을 간략하게 요약하면 아래와 같다.
- test.jsp에서 <s:hidden> 태그를 사용해 test.action으로 값 전송.
- struts.xml에서 test.action이 호출 시 LabelTest 클래스와 연결.
- LabelTest 클래스가 test.action에서 보낸 값 처리 및 struts.xml로 SUCCESS 반환.
- test2.jsp에서 <s:property>태그로 값 출력.
◆ 예제코드
1. test.jsp에서 값 전송
- <s:hidden> 태그로 value에 숨겨진 값을 설정한다. 이 값은 name 속성에 매핑된 필드로 전송된다.
- <s:submit> 버튼 클릭 시 <s:form> 태그는 action 속성에 지정된 test.action을 호출하며, 이는 struts.xml에서 정의된 액션으로 매핑된다.
- 예를 들어, text1 필드의 경우, value값인 "보낼값1"이 설정된다.
2. Struts2가 액션 매핑 처리
- struts.xml에서 action 호출시 값을 넘겨줄 클래스와 결과가 success시 이동할 뷰의 경로를 지정해 준다.
- test.action은 stTest.LabelTest 클래스와 연결된다.
3. LabelTest 클래스에서 처리
- LabelTest 클래스는 setText1, setText2, setText3 메서드를 통해 요청 파라미터 값을 받아서, LabelTest 클래스의 private 변수(text1, text2, text3)로 저장된다.
- 이때 변수명은 test.jsp의 <s:hidden> 태그의 name 속성값과 같아야 매핑된다.
- 변수값이 설정된 후, ActionSupport 클래스에서 상속받은 execute() 메서드가 실행되는데, 여기서 SUCCESS를 반환하면, struts.xml에 정의된 결과 매핑(success)에 따라 test2.jsp로 이동한다.
- ※ return SUCCESS;는 Struts2의 기본 규약으로, 성공 시 "success"라는 결과 이름을 반환한다.
Action 인터페이스의 리턴코드 | 상세설명 |
ERROR | 액션실행에 실패하여 에러페이지로 돌아감 |
INPUT | 입력값이 부족하거나 문제가 있어 입력페이지로 돌아감 |
LOGIN | 로그인을 하지않아 액션을 실행할 수 없으므로 로그인 페이지로 돌아감 |
NONE | 액션이 성공적으로 실행되었지만 화면을 보여주지 않음 |
SUCCESS | 액션이 성공적으로 실행되어 결과 화면을 보여줌 |
4. test2.jsp에서 값 출력
- test2.jsp는 <s:property> 태그를 통해 Value Stack에 저장된 값을 출력한다.
- Value Stack에는 LabelTest 클래스의 getter 메서드(getText1, getText2, getText3)를 통해 값이 저장된다.
- ※ Value Stack: Struts2의 핵심 개념으로, 액션 클래스에서 생성된 데이터는 Value Stack에 저장된다.
- 최종적으로 test1.jsp의 <s:hidden> 태그에서 보냈던 value값인 "보낼값1", "보낼값2", "보낼값3"이 HTML 테이블에 표시된다.
◆ 실행결과
test.jsp에서 click 버튼을 클릭하면, test.jsp의 <s:hidden> 설정값이 test2.jsp에서 잘 출력된다.

◆ Struts2에서 꼭 <s:form>과 <s:hidden>을 사용해야만 hidden값을 전달할 수 있는가?
그건 아니다.
html의 <form>과 <input type="hidden"> 태그로도 같은 동작을 구현할 수 있다.



글 내용 중 잘못된 부분이 있거나, 첨부하실 내용이 있으시면 댓글로 남겨주세요. 공부하는데 많은 도움이 됩니다.
-- 기억의 유효기간은 생각보다 짧다. --
반응형