Eai galera boa tarde,
Seguinte, preciso criar um aplicativo que faça o cadastro de alunos e disciplinas, onde um aluno pode ter varias disciplinas e as disciplinas podem ter varios alunos (ManyToMany). Estou usando struts e hibernate para fazer tal aplicativo e, o problema é que quando vou criar o formulário para enviar os dados, a única maneira que conheço para cadastrar na lista de disciplinas do aluno é criar uma variável para receber cada disciplina e colocar dentro de uma lista para depois setar esta lista na lista de disciplinas, sendo assim eu terei uma lista de disciplinas na classe aluno populada com outra lista de disciplinas, o que não é nem um pouco prático. Gostaria de saber se existe alguma forma de passar os dados das disciplinas do formulário (este é feito usando as tags do struts) diretamente para a lista de alunos na classe aluno como estou fazendo com o nome, telefone e email sem que eu precise criar um objeto do tipo List na minha classe de ação para receber as disciplinas e entao passar todos os parametros para o construtor de alunos.
Segue o código das classes Aluno.java, AlunoAction.java e formAluno.jsp respectivamente, acredito que as demais classes não são necessárias aqui.
obs.: não coloquei os gets and sets para diminuir o tamanho do tópico@Entity
@Table(name = "aluno", catalog = "ds1t9")
public class Aluno {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id_aluno", unique = true, nullable = false)
private Integer matricula;
@Column(name = "nome")
private String nome;
@Column(name = "telefone")
private String telefone;
@Column(name = "email")
private String email;
@ManyToMany
@JoinTable(name = "disciplina", joinColumns = {@JoinColumn(name = "id_aluno")},
inverseJoinColumns = {@JoinColumn(name = "id_disciplina")})
@Column(name = "disciplinas")
private List<Disciplina> disciplinas;
public Aluno (){
}
public Aluno (String n, String t, String e, List<Disciplina> d) {
this.nome = n;
this.telefone = t;
this.email = e;
this.disciplinas =d;
}
//getters and setters
public class AlunoAction extends ActionSupport {
private Aluno aluno;
private AlunoBO alunoService = new AlunoBO();
private List<Aluno> listaAlunos;
private List<Disciplina> listaDisciplinas;
private String disciplina1;
private String disciplina2;
private String disciplina3;
private String cadastrarAluno() {
listaDisciplinas.add(disciplina1);
listaDisciplinas.add(disciplina2);
listaDisciplinas.add(disciplina3);
Aluno a = new Aluno(aluno.getNome(), aluno.getTelefone(), aluno.getEmail(), listaDisciplinas);
alunoService.inserirAluno(aluno);
addActionMessage("Cadastrado com sucesso");
return listar();
}
private String listar() {
listaAlunos = alunoService.listarAlunos();
return "sucesso";
}
}
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<center>
<h3>Cadastro de aluno</h3>
<s:form action="cadastrarAluno.action">
<s:textfield name="aluno.nome"/>
<s:textfield name="aluno.telefone"/>
<s:textfield name="aluno.email"/>
<s:textfield name="disciplina.disciplina1"/>
<s:textfield name="disciplina.disciplina2"/>
<s:textfield name="disciplina.disciplina3"/>
<s:submit value="Enviar"/>
</s:form>
</center>