gpt4 book ai didi

javascript - 在 JSTL 中迭代多个不同大小的项目

转载 作者:行者123 更新时间:2023-11-30 17:34:48 25 4
gpt4 key购买 nike

我的 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>

包含此代码的页面由此方法调用(放置在我的 Controller 中):

@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 类):

最后,这是将授权数据保存在内存中的 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;
}
}

最佳答案

尝试这样的事情:

<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 属性。

关于javascript - 在 JSTL 中迭代多个不同大小的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22273018/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com