일종의 API를 만드는 것으로 사용자가 무척 쉽게 사용할 수 있도록 설계를 해야 합니다.
참조 : 프레임워크의 인터페이스(API)

<ajn:page>
    <ajn:table>
       <ajn:thead>
          <ajn:th title="순번" />
          <ajn:th title="책" />
          <ajn:th title="신청자" />
       <ajn:thead>
       <ajn:tbody>
          <ajn:bookOrderColumn num="1", title="~~", link="~~", owners="~~" />
          <ajn:bookOrderColumn num="1", title="~~", link="~~", owners="~~" />
          <ajn:bookOrderColumn num="1", title="~~", link="~~", owners="~~" />
        </ajn:tbody>
    </ajn:table>
</ajn:page>

태그 파일 사용해서 코드 줄여 보겠다고 만든 원본이 위와 같았습니다. 태그가..page, table, thead, th, tbody, bookOrderColumn 무려 6개.. 기능이 엄청나게 많아서 어쩔 수 없이 복잡한 인터페이스라면 모를까... 기껏 해야 테이블하나 보여줄 뿐인데 말이죠.

<ajn:page title="구매 대행 신청 도서 목록">
    <ajn:table is="list" of="order">
        <ajn:column property="${order.num}" title="순번" />
        <ajn:column property="${order.bookName}" linkProperty="${order.link}" title="책이름"  />
        <ajn:column property="${order.owners}" title="신청자" />
    </ajn:table>
</ajn:page>

지금은 이렇게 바꼈습니다. 태그는 page, table, column 이렇게 세개로 줄었습니다. 대신 태그 파일들의 내부는 이전보다 복잡해 졌지만 그건 태그의 사용자가 고려할 사항이 아니죠.

ps : EL태그 안에 EL태그가 먹힌다면(ex. ${order.${property}})  개선한 코드에서 색칠된 부분을 뺄 수 있습니다.