我有以下代码我想检查表行中的每个用户是否具有字符串'all'的权限,并将“ALL permissions's Allowed”设置为相应选择列表的selectedText。
<%!
List permission = new ArrayList();
Connection connection;
PreparedStatement ps1,ps2;
ResultSet rs1,rs2;
String sql1,sql2;
// execute rs1
%>
<table>
<tbody>
<%
while (rs1.next()) {
String user = rs1.getString('username');
%>
<tr>
<td class="username" width="200"><%=user%></td>
<td class="perms" width="200">
<%
sql2 = "SELECT perms_name FROM perms WHERE username = ? ";
// execute rs2
permission.clear();
while (rs2.next()) {
permission.add(rs2.getString("permission"));
}
%>
<select class="perms" name="perms" multiple="multiple">
<% for(int i=0;i<permsList_folder.size();i++){%>
<option value="<%=permission.get(i)%>" disabled="disabled" selected="selected"><%=permission.get(i).toString().toUpperCase()%></option>
<%}%>
</select>
<td>
</tr>
</tbody>
</table>
<script>
var hasAllPerms ="<%=permission.contains('all')%>";// this only handle last row results not for each row/user in table
$(".perms").multiselect({
noneSelectedText: "No Permission",
selectedText:hasAllPerms=="true"?"ALL Permissions's Allowed":"# Permissions's Allowed"
});
</script>
答案 0 :(得分:2)
有几种方法可以实现您的目标。
在这种情况下,您似乎使用的是jsp,因此您只需设置所选值并显示字符串服务器端,而无需使用任何javascript。
<select class="perms" name="perms" multiple="multiple">
<% for(String permissionStr : permission) {
String selectedStr="";
String displayValue=permissionStr.toUpperCase();
if("all".equals(permissionStr))
{
displayValue="ALL Permissions's Allowed";
selectedStr="selected='selected'";
}
%>
<option value="<%=permissionStr%>" disabled="disabled" <%=selectedStr%> ><%=displayValue%></option>
<%}%>
</select>
如果你想使用javascript / jquery设置它,一种方法是为每个选择框添加一个id,例如
<select class="perms" name="perms" id="perms<%=user%>" multiple="multiple">
<% for(int i=0;i<permsList_folder.size();i++){%>
<option value="<%=permission.get(i)%>" disabled="disabled" selected="selected"><%=permission.get(i).toString().toUpperCase()%></option>
<%}%>
</select>
然后迭代每个用户,而不是基于id
选择基于类选择的选择$("#perms" + user).multiselect(...);
我也不会使用原始类型(pre java 1.5向后兼容性)并在您的权限列表中设置类型并添加&#39; s&#39;或者&#39;列出&#39;更清楚地表明它是一个包含多个权限的集合。
<%!
List<String> permissions = new ArrayList<String>();
%>