JSTL의 한 예제(Spring MVC의 board/edit.jsp 수정)
Spring 프레임워크 워크북을 보고 계시죠?
Spring MVC(II) 부분에 보면 JSTL을 이용하여 board/edit.jsp 파일을 구현하고 있는데,
약간의 수정을 가하면 좀 더 분명한 의미가 전달이 되고,
JSTL도 약간 공부가 될 거 같아 올립니다...
저도 JSTL은 예전에 잠시 보기만 하고 적용해 보지 않다가
이번 기회게 차후에라도 적용해 보고자 신경을 쓰고 있죠^^;;
edit.jsp를 다음과 같이 수정하면 원래의 의미대로 하나의 URL로 게시판 쓰기와 수정의 입력하면을 달리 할 수 있습니다.
먼저, <head>의 <title>을 다음과 같이 수정해 보죠...
그전에 Message.properties에 다음을 추가해 줍니다.
board.write.title=\uc790\ub8cc\uc2e4 \uac8c\uc2dc\ud310 - \ucd94\uac00
"게시판 - 추가"를 유니코드로 나타낸 것입니다.
그래서 <title>태그를 다음과 같이 수정합니다.
<c:if test="${not empty board.name}">
<fmt:message key="board.modify.title"/>
</c:if>
<c:if test="${empty board.name}">
<fmt:message key="board.write.title"/>
</c:if>
그러면 쓰기와 수정에 따른 타이틀이 달라지죠..
다음은 쓰기와 수정시 "이름"과 "email"은 각각 쓰임에 따라서 나타낼 수 있습니다.
그런데, 책의 예제소스로는 수정시 기존의 저장된 Board 객체에 있는 녀석만 가져올 수 있도록 되어져 있습니다.
따라서 이 부분을 JSTL을 통해서 다음과 같이 수정할 수 있습니다.
name(이름) 필드를 다음과 같이 수정합니다.
<c:choose>
<c:when test="${not empty loginUser.name}">
<spring:bind path="board.name">
<c:if test="${not empty board.name}">
<input type="text" style="width:150" name="name" value="${status.value}" />
</c:if>
<c:if test="${empty board.name}">
<input type="text" style="width:150" name="name" value="${loginUser.name}" />
</c:if>
<span class="fieldError">${status.errorMessage}</span>
</spring:bind>
</c:when>
<c:otherwise>
<spring:bind path="board.name">
<c:if test="${not empty board.name}">
<input type="text" style="width:150" name="name" value="${status.value}" />
</c:if>
<c:if test="${empty board.name}">
<input type="text" style="width:150" name="name" value="${loginUser.name}" />
</c:if>
<span class="fieldError">${status.errorMessage}</span>
</spring:bind>
</c:otherwise>
</c:choose>
그리고, email 필드를 다음과 같이 수정합니다.
<c:choose>
<c:when test="${not empty loginUser.name}">
<spring:bind path="board.email">
<c:if test="${not empty board.email}">
<input type="text" style="width:250" name="email" value="${status.value}" />
</c:if>
<c:if test="${empty board.email}">
<input type="text" style="width:250" name="email" value="${loginUser.email}" />
</c:if>
<span class="fieldError">${status.errorMessage}</span>
</spring:bind>
</c:when>
<c:otherwise>
<spring:bind path="board.email">
<c:if test="${not empty board.email}">
<input type="text" style="width:250" name="email" value="${status.value}" />
</c:if>
<c:if test="${empty board.email}">
<input type="text" style="width:250" name="email" value="${loginUser.email}" />
</c:if>
<span class="fieldError">${status.errorMessage}</span>
</spring:bind>
</c:otherwise>
</c:choose>
그러면, 쓰기와 수정에 따라서 각각 상황에 맞는 필드가 채워지고 의미가 분명해집니다^^
첨부된 이미지를 참조하세요~~
다음에 wiki가 정상적으로 가동되면 깔끔하게 정리해서 올릴께요~~~
즐거운 주말 되세요...^^
참.. 세미나 오시는 분들 연락주세요~~~