티스토리 뷰

728x90
액션 클래스에서 어떤 이름으로 값이 넘어오면

보통 <s:property> 태그를 사용해서 값을 꺼내오는데

<s:if> 또는 <s:iterator> 를 사용한 경우는 꺼내는 방식이 약간 다르다..

스트럿츠를 처음 접할때 봤던 내용인 것 같은데 다 까먹고 있다가 계속 삽질만 해서 다시 정리한다

[액션 클래스]
ArrayList<BoardBean> boardBean;
String number;

...Getter / Setter 생략... 

[BoardBean]
String id;
String number;




클래스가 이런 형태라고 가정하고 number와 boardBean의 id 값을 꺼낸다고 하면..

[Result JSP]
ㅇ <s:property>만 사용하는 경우
Number : <s:property value="number" />
boardBean ID : <s:property value="boardBean.id" />
boardBean Number : <s:property value="boardBean.number" />

ㅇ <s:if> 안에서 사용하는 경우
<s:if test="number == boardBean.number">
    number : <s:property value="number" />
</s:if>
==> <s:if> 태그 안에 다시 <s:property>를 넣어주지 않고 바로 변수명을 써주기만 하면 된다

ㅇ <s:iterator> 안에서 사용하는 경우
<s:iterator value="boardBean">
    boardBean Number  : <s:property value="number" />
    // 이 경우 액션 클래스의 number가 아니라 BoardBean의 number가 출력된다
</s:iterator>
Number : <s:property value="number" />
// <s:iterator> 외부에서는 액션 클래스의 number 이다



<s:iterator> 내부에서 액션 클래스의 number를 부르는 방법은 아무리 찾아봐도 못찾겠다...

굳이 쓸려면 <s:iterator> 내부에서 쓸려면 아예 변수명을 다르게 해서 넘어오던가 아래와 같이 해줘야 된다

<s:set name="outputNumber" value="number"/>
<s:iterator value="boardBean">
    BoardBean Number : <s:property value="number" />
    액션 클래스 Number : <s:property value="outputNumber" />
</s:iterator>