2013年1月23日水曜日

データベースの値に基づくラジオボタンのチェック表示


データベースに登録されている値から動的にラジオボタンにチェックする方法について、
0の場合は、無効にチェックし、1の場合は有効にチェックする例。
以下は、無駄の多いコード。

   <c:choose>
    <c:when test="${subjectDTO.deleteFlag==0}">
     <input type=radio name="deleteFlag" value="0" checked>有効
    </c:when>
    <c:otherwise>
     <input type=radio name="deleteFlag" value="0" />有効
    </c:otherwise>
   </c:choose>
   <c:choose>
    <c:when test="${subjectDTO.deleteFlag==1}">
     <input type=radio name="deleteFlag" value="1"  checked/>無効
    </c:when>
    <c:otherwise>
     <input type=radio name="deleteFlag" value="1"/>無効
    </c:otherwise>
   </c:choose>

これをちょっと整理してみた。

   <c:choose>
    <c:when test="${subjectDTO.deleteFlag==0}">
     <input type=radio name="deleteFlag" value="0" checked>有効
     <input type=radio name="deleteFlag" value="1"/>無効
    </c:when>
    <c:otherwise>
     <input type=radio name="deleteFlag" value="0" />有効
     <input type=radio name="deleteFlag" value="1" checked/>無効
    </c:otherwise>
   </c:choose>

さらに、以下のようにしてみた。

   <c:forEach var="i" begin="0" end="1" step="1">
    <c:choose>
     <c:when test="${subjectDTO.deleteFlag == i}">
      <input type=radio name="deleteFlag" value="${i}" checked>ラベル${i}
     </c:when>
     <c:otherwise>
      <input type=radio name="deleteFlag" value="${i}" />ラベル${i}
     </c:otherwise>
    </c:choose>
   </c:forEach>

上記の例では、forEachでまわす回数は、ラジオボタンの個数分(0、1)としているが、
end部分を変数として与えることで任意の個数についても対応可能となる。

0 件のコメント:

コメントを投稿