Popular lista no ManagedBean através de checkbox clicados pelo usuário
Olá pessoal, preciso implementar uma nova funcionalidade para o sistema da empresa e na hora de pensar na lógica, travei!!!
Se puderem me ajudar, agradeceria muito.
O problema é o seguinte, tenho duas Classes (e entidades do banco), são elas: Praga e Inspecao.
Na classe Inspecao tenho um atributo (que não sei se vai funcionar direito, devido ao mapeamento que eu fiz) que é do tipo. Em outras palavras a classe Inspecao recebe uma lista de pragas encontradas no momento da inspeção.
Pensei em uma lógica mais ou menos assim: Vou criar uma tela com todas as Pragas existentes no sistema (não são muitas) acompanhadas de um checkbox para cada, além do checkbox referente a praga, tenho alguns para inserir algumas informações como qntde, etc. Quando o usuário marca o checkbox de determinada praga, eu teria q adiciona-la na lista de pragas no meu managedBean para quando for persistir passar essa lista ao atributo da classe Inspeção.
Não sei ficou claro, mas em resumo é uma tela com uma lista acompanha de checkbox, que quando clicadados adicionam aquele item a lista do managedBean. Segue alguns códigos q tentei fazer, mas não sai muito do lugar.
Obrigado
Tela com a Praga1 (Leprose) listada, ao clicar no checkbox rotulado com "Leprose", deveria adicionar o objeto Leprose à lista de Pragas, o mesmo código se repetiria para as demais pragas:
Classe Praga:
Classe Inspecao:
ManagedBean:
como podem ver não conseguir desenvolver algo para fazer a adição na lista.
Obrigado.
Se puderem me ajudar, agradeceria muito.
O problema é o seguinte, tenho duas Classes (e entidades do banco), são elas: Praga e Inspecao.
Na classe Inspecao tenho um atributo (que não sei se vai funcionar direito, devido ao mapeamento que eu fiz) que é do tipo
List<Praga>
Pensei em uma lógica mais ou menos assim: Vou criar uma tela com todas as Pragas existentes no sistema (não são muitas) acompanhadas de um checkbox para cada, além do checkbox referente a praga, tenho alguns
<p:inputText>
Não sei ficou claro, mas em resumo é uma tela com uma lista acompanha de checkbox, que quando clicadados adicionam aquele item a lista do managedBean. Segue alguns códigos q tentei fazer, mas não sai muito do lugar.
Obrigado
Tela com a Praga1 (Leprose) listada, ao clicar no checkbox rotulado com "Leprose", deveria adicionar o objeto Leprose à lista de Pragas, o mesmo código se repetiria para as demais pragas:
<p:row> <p:column colspan="8"> <p:selectBooleanCheckbox id="boolCheckLeprose" required="#{param['fmCadIspecao:btnConfirm']==false}" value="Leprose" > <f:ajax render="novas"/> </p:selectBooleanCheckbox> <p:spacer width="6"/> <p:outputLabel value="Leprose" for="boolCheckLeprose" /> <br/> <p:selectBooleanCheckbox id="novas" required="#{param['fmCadIspecao:btnConfirm']==false}" value="#{inspecaoController.inspecao.plantasNovas}" /> <p:spacer width="6"/> <p:outputLabel value="Plantas Novas >>" for="novas"/> <p:spacer width="10"/> <p:outputLabel id="qtdElevadoNova" value="Qtde. + elevado: " for="qtdMaisElevadoNova"/> <p:inputText id="qtdMaisElevadoNova" value="#{inspecaoController.inspecao.qntdMaisElevadaNovas}" style="width: 60px;"/> <p:spacer width="5"/> <p:outputLabel id="qtdTotalNova" value="Qtde. Total: " for="qtdTotalNovas"/> <p:inputText id="qtdTotalNovas" value="#{inspecaoController.inspecao.qntdTotalNovas}" style="width: 60px;"/> <br/> <p:selectBooleanCheckbox id="velhas" required="#{param['fmCadIspecao:btnConfirm']==false}" value="#{inspecaoController.inspecao.plantasVelhas}" /> <p:spacer width="6"/> <p:outputLabel value="Plantas Velhas >>" for="velhas"/> <p:spacer width="8"/> <p:outputLabel id="qtdElevadoVelhas" value="Qtde. + elevado: " for="qtdMaisElevadoVelhas"/> <p:inputText id="qtdMaisElevadoVelhas" value="#{inspecaoController.inspecao.qntdMaisElevadaVelhas}" style="width: 60px;"/> <p:spacer width="5"/> <p:outputLabel id="qtdTotal" value="Qtde. Total: " for="qtdTotalVelhas"/> <p:inputText id="qtdTotalVelhas" value="#{inspecaoController.inspecao.qntdTotalVelhas}" style="width: 60px;"/>
Classe Praga:
@Entity @SequenceGenerator(name = "PRAGA_SEQUENCE", sequenceName = "PRAGA_SEQUENCE", allocationSize = 1, initialValue = 0) @Table(name = "praga") public class Praga implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "PRAGA_SEQUENCE") private Long id; @Column(name = "nome", nullable = false) private String nome; @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "intervalo_baixo") private Intervalo intervaloBaixo; @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "intervalo_medio") private Intervalo intervaloMedio; @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "intervalo_alto") private Intervalo intervaloAlto; @ManyToOne private Inspecao inspecao; //gets e setters omitidos
Classe Inspecao:
@Entity @SequenceGenerator(name = "INSPECAO_SEQUENCE", sequenceName = "INSPECAO_SEQUENCE", allocationSize = 1, initialValue = 0) @Table(name = "inspecao") public class Inspecao implements Serializable { @Id @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "INSPECAO_SEQUENCE") private Long id; @Column(name = "numero_inspecao") private Long numInspecao; @ManyToOne @JoinColumn(name = "talhao_inspecionado", nullable = false) private Talhao talhaoInspecionado; @Column(name = "porcentagem_a_visar", nullable = false) private double porcentagemAvisar; @Column(name = "data_inspecao", nullable = false) @Type(type = "com.delago.matta.type.LocalDateUserType") private LocalDate dataInspecao; @ManyToOne @JoinColumn(name = "inspetor", nullable = false) private Funcionario inspetorResponsavel; @OneToMany(mappedBy = "inspecao") @OrderBy("id") private List<Praga> pragaEncontradas; // essa é a lista na classe @Column(name = "planta_novas_infectadas") private boolean plantasNovas; @Column(name = "qntdMaisElevado_plantasNovas") private Integer qntdMaisElevadaNovas; @Column(name = "qntdTotal_plantasNovas") private Integer qntdTotalNovas; @Column(name = "plantas_velhas_infectadas") private boolean plantasVelhas; @Column(name = "qntdMaisElevado_plantasVelhas") private Integer qntdMaisElevadaVelhas; @Column(name = "qntdTotal_plantasVelhas") private Integer qntdTotalVelhas;
ManagedBean:
@ManagedBean @SessionScoped public class InspecaoController implements Serializable { private final iFunctions apiMatta; private Inspecao inspecao; private final InspecaoDAO dao; private Propriedade propriedade = new Propriedade(); private Talhao talhao = new Talhao(); private Funcionario inspetor = new Funcionario(); private Praga praga = new Praga(); private List<Propriedade> listaPropriedades; private List<Talhao> listaTalhoes; private List<Funcionario> listaFuncionarios; private List<Praga> listaPragas; // essa lista deveria receber as pragas que foram checkadas na tela private List<Inspecao> listaInspecoes; private final List<EstagioPraga> estagiosExistentes; private List<String> estagiosEncontrados; public String salvar() { try { inspecao.setInspetorResponsavel(inspetor); inspecao.setPragaEncontradas(listaPragas); inspecao.setTalhaoInspecionado(talhao); inspecao.setUsuario(usuario); defineNumeroInspecao(talhao); if (dao.inserir(inspecao)) { listaInspecoes = listar(); limparCampos(); ApiMatta.addMessageSuccessful("Sucesso", "Inspeção salva com sucesso!"); return "/pages/inspecao/index.xhtml?faces-redirect=true"; } else { ApiMatta.addMessageError(null, "Erro", "Erro ao cadastrar nova Inspeção."); return ""; } } catch (Exception e) { System.out.println("Inspecao.salvar-catch:" + e.getMessage()); e.printStackTrace(); return ""; } }
como podem ver não conseguir desenvolver algo para fazer a adição na lista.
Obrigado.
Rafael
Curtidas 0