2011-11-24 56 views
2

我在寫一個使用servlet和JSP的小型web應用程序(沒有額外的框架)。僅使用JSP編輯bean

有一個頁面顯示數據庫中的所有組。可以通過按一個將重定向到頁面"editGroup?id=1"的按鈕來編輯條目。因此,目標的serlvet發現到組與所提供的ID,填充與豆請求,並作出着一個JSP頁面:

 <form action="addGroup.html" method="post"> 
      Group name : <input type="text" name="name" value="${group.name }"/><br /> 
      Group description : <input type="text" name="description" value="${group.description }"/><br /> 
      Group roles : 
      <c:forEach var="role" items="${roles}"> 
       <input type="checkbox" name="roles_id" value="${role.id}" />${role.name}<br /> 
      </c:forEach> 
      <input type="submit" value="Submit"> 
     </form> 

的問題是:如何預選已經被附加到角色小組? 該組的bean有一個bean角色列表。該請求還設置了一個存儲所有可用角色列表的屬性。

因此,在循環內我需要檢查角色是否已經連接到編輯組。

請幫忙。

回答

1

一些調查後,我找到了解決辦法在this question

<c:forEach var="role" items="${roles}"> 
    <c:choose> 
     <c:when test="${group.roles.contains(role)}"> 
      <input type="checkbox" name="roles_id" value="${role.id}" checked="checked"/>${role.name} 
     </c:when> 
     <c:otherwise> 
      <input type="checkbox" name="roles_id" value="${role.id}"/>${role.name} 
     </c:otherwise> 
    </c:choose> 
</c:forEach> 

使用表達式,如:${group.roles.contains(role)}

或這樣(!謝謝你,BalusC

<c:forEach var="role" items="${roles}"> 
    <input type="checkbox" name="roles_id" value="${role.id}" ${group.roles.contains(role) ? 'checked' : ''}/>${role.name}  
</c:forEach> 
+1

你可以擺脫整個'',並最終與一個''通過使用condi EL公司的運營商。 – BalusC

+0

@BalusC:謝謝! – StKiller