Whiteship's Note

ajn 태그 파일 table과 column

JEDI/ToDo : 2007. 3. 27. 17:14


화면에서는 이렇게 사용할 수 있습니다.
    <ajn:table>
        <ajn:column title="순번" property="${order.num}" />
        <ajn:column title="책" property="${order.bookName}" link="${order.link}"/>
        <ajn:column title="신청자" property="${order.owners}" />
    </ajn:table>

table 태그의 내용은 다음과 같습니다.
column 태그의 내용은 다음과 같습니다.

유용하지 않은 이유는..
1. 저 태그를 사용하는 콜렉션의 이름은 무조건 orders 여야 합니다. 아니면 테이블 태그파일에서 리스트의 이름으로 빨간 색 부분을 수정해 주시면 됩니다.
2. 콜렉션에 담겨이는 각각의 객체에 있는 속성들은 꼭 앞에 order를 붙여줘야 합니다.

이렇게 된 이유는..
1. EL 안에 EL이 먹지 않습니다. ${order.${property}} 이런 건 안되더군요.
2. 머리가 나빠서..;; 아마 다른 방법이 있겠죠. displayTag 처럼 잘 돌아가는게 있으니까요.
top

  1. Favicon of https://seal.tistory.com BlogIcon 물개선생 2007.03.27 17:52 신고 PERM. MOD/DEL REPLY

    몇 가지 힌트를 드리자면,
    1. 컬렉션 orders가 ajn:table의 파라미터로 전달되면 유용하지 않은 이유 1이 해결됩니다.
    예)
    <%@ attribute name="list" type="java.util.Collection" required="true" %>
    2. ajn:column은 request 등에 정보를 담아 ajn:table로 보내는 역할만 하고, 수집된 정보를 이용해서 ajn:table에서 정보를 출력하는 방식으로 하면 유용하지 않은 이유 2가 해결됩니다.
    예)
    3. EL 내부에 EL이 먹지 않는 문제를 해결하는 건 좀 어려운데요, 자체 EL 해석기를 만들어 사용할 수 있습니다만 저도 해보지 않아서. 그 밖의 방법으로 톰켓 등의 컨테이너에서 EL을 사용한 다음 그것이 컴파일 되어 나온 서블릿 소스를 분석해보면 그 컨테이너가 어떻게 EL을 처리하는지 확인할 수 있습니다. 그 코드를 스크립트릿으로 직접 태그파일에 써넣는 방법을 쓰면 EL안에 EL을 쓰는 문제를 해결할 수 있습니다. 톰켓의 경우는 아래와 같은 코드 부분을 찾아보면 property 정보에 order의 속성만 넘겨서 값을 구해올 수 있는 방법이 있습니다.
    예)
    PageContextImpl.proprietaryEvaluate("${row." + colpath + "}", Object.class, (PageContext)this.getJspContext(), null, false)

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.27 18:41 신고 PERM MOD/DEL

    와오~ 선생님 완전 싸랑해요!!! :)

    잠시 AOP 공부하는 사이에 이런 도움을 받게 될 줄이야..아 감동입니다~

  2. Favicon of https://seal.tistory.com BlogIcon 물개선생 2007.03.27 17:52 신고 PERM. MOD/DEL REPLY

    흠 적다보니 답글로 적기에 분량이 너무 많네요. 이 문제로 계속 고민 중이면 메신저로 연락주세요. :)

    Favicon of https://whiteship.tistory.com BlogIcon 기선 2007.03.27 18:41 신고 PERM MOD/DEL

    감사합니다. 굉장한 도움으로 빛이 반짝였습니다. 헤헷 도저히 해결이 안되면 그때 문의 드리겠습니다~ :)

Write a comment.




: 1 : 2 : 3 : 4 : 5 : 6 : 7 : ··· : 9 :