我的JSP页面正在接收两个列表:一个是可用的所有自动化列表,另一个是一个特定用户可用的自动化。我想创建一个复选框列表,列出所有自动化,但只检查用户的自动化。有人可以指出我这样做的一个方向吗?
更新1
这是显示所有自动化的html / jstl代码:
<div class="row" id="autorizacoes ${item.id}">
<c:forEach var="item_auth" items="${autorizacoes}">
<input type="checkbox" name="${item_auth.nome}" onclick="mudaAutorizacao(${item_auth.nome})">${item_auth.nome}
</c:forEach>
</div>
此方法调用包含此代码的页面(放在我的控制器中):
@RequestMapping("/listagem_usuario")
public ModelAndView listagem_usuario()
{
UsuarioDAO lista = new UsuarioDAO();
DadosDAO dados = new DadosDAO();
TipoDAO tipo = new TipoDAO();
AutorizacaoDAO auth = new AutorizacaoDAO();
ModelAndView mav = new ModelAndView();
mav.setViewName("listagem_usuario");
mav.addObject("usuarios", lista.lista());
mav.addObject("campos", dados.getListaCampos());
mav.addObject("tipos", tipo.getListaTipos());
mav.addObject("autorizacoes", auth.getListaAutorizacoes());
return mav;
}
这是来自AutorizationDAO的方法,它读取数据库中的自动化:
public List<Autorizacao_usuario> getListaAutorizacoes()
{
List<Autorizacao_usuario> lista = new ArrayList<Autorizacao_usuario>();
conecta();
if(executa("SELECT id, nome, descricao FROM autorizacoes;")) {
do{
Autorizacao_usuario auth = new Autorizacao_usuario(getInt(1), getString(2), getString(3));
lista.add(auth);
}while(proximo());
}
return lista;
}
每个用户的自动化都可以从List<Autorizacao_usuario> getAutorizacoes()
(com.HorarioLivre.core.Usuario类)获得:
最后,这是将autorization数据保存在内存中的POJO类:
package com.HorarioLivre.core;
public class Autorizacao_usuario {
private int Id;
private String nome;
private String descricao;
public Autorizacao_usuario()
{
this.setId(0);
this.setNome(null);
this.setDescricao(null);
}
public Autorizacao_usuario(int id, String nome, String descricao)
{
this.setId(id);
this.setNome(nome);
this.setDescricao(descricao);
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public String setDescricao(String descricao) {
this.descricao = descricao;
return descricao;
}
}
答案 0 :(得分:2)
尝试这样的事情:
<div class="row" id="autorizacoes ${item.id}">
<c:forEach var="item_auth" items="${autorizacoes}">
<c:set var="isChecked" value="${false}"/>
<c:forEach var="user_auth" items="${userAutorizacoes}">
<c:if test="${user_auth.id == item_auth.id}"> <!-- here compare according ID or any unique attribute -->
<c:set var="isChecked" value="${true}"/>
</c:if>
</c:forEach>
<input type="checkbox" name="${item_auth.nome}" onclick="mudaAutorizacao(${item_auth.nome})" <c:if test="${isChecked}">checked="checked"</c:if> />${item_auth.nome}
</c:forEach>
</div>
它检查每个item_auth
是否等于用户的自动化,如果是,则在复选框元素中设置checked属性。