I have the following classes:
@Entity
public class Aluno {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ra")
private int ra;
@NotNull(message = "Nome não pode ser nulo!")
@NotEmpty(message = "Nome não pode ser vazio!")
@Column(name = "nome")
private String nome;
public int getRa() {
return ra;
}
public void setRa(int ra) {
this.ra = ra;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
@Entity
public class Disciplina {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "codigo")
private int codigo;
@NotNull(message = "Nome não pode ser nulo!")
@NotEmpty(message = "Nome não pode ser vazio!")
@Column(name = "nome")
private String nome;
@NotNull(message = "Sigla não pode ser nula!")
@NotEmpty(message = "Sigla não pode ser vazia!")
@Column(name = "sigla")
private String sigla;
@NotNull(message = "Turno não pode ser nulo!")
@NotEmpty(message = "Turno não pode ser vazio!")
@Column(name = "turno")
private String turno;
@NotNull(message = "Número não pode ser nulo!")
@Column(name = "num_aulas")
private int numeroAulas;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public String getTurno() {
return turno;
}
public void setTurno(String turno) {
this.turno = turno;
}
public int getNumeroAulas() {
return numeroAulas;
}
public void setNumeroAulas(int numeroAulas) {
this.numeroAulas = numeroAulas;
}
}
@Entity
public class Faltas {
@EmbeddedId
private FaltasPK pk;
@ManyToOne
@MapsId("ra")
@JoinColumn
private Aluno aluno;
@ManyToOne
@MapsId("codigo")
@JoinColumn
private Disciplina disciplina;
@NotNull(message = "Presença não pode ser nula!")
@NotEmpty(message = "Presença não pode ser vazia!")
@Column(name = "presenca")
private String presenca;
public FaltasPK getPk() {
return pk;
}
public void setPk(FaltasPK pk) {
this.pk = pk;
}
public Aluno getAluno() {
return aluno;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
public Disciplina getDisciplina() {
return disciplina;
}
public void setDisciplina(Disciplina disciplina) {
this.disciplina = disciplina;
}
public String getPresenca() {
return presenca;
}
public void setPresenca(String presenca) {
this.presenca = presenca;
}
}
How can I create a combobox in HTML with Thymeleaf which loads all the data of "Aluno" and "Disciplina" in my page (so that I can choose an "Aluno" and a "Disciplina" to create "Faltas"?
This is my controller:
@RequestMapping(method = RequestMethod.GET, value = "/faltas")
public ModelAndView inicio() {
ModelAndView modelAndView = new ModelAndView("insercao/faltas");
modelAndView.addObject("faltaobj", new Faltas());
List<Faltas> listaFaltas = faltasRepository.findAll();
modelAndView.addObject("listaFaltas", listaFaltas);
return modelAndView;
}
And I tried to do my HTML with Thymeleaf with the following code:
<div class="row">
<label for="aluno" class="active">Aluno</label>
<select th:field="*{aluno}">
<option value="">Selecione um aluno</option>
<option th:each="aluno : ${listaAlunos}" th:value="${aluno.ra}" th:text="${aluno.nome}" />
</select>
</div>
<div class="row">
<label for="disciplina" class="active">Disciplina</label>
<select th:field="*{disciplina}">
<option value="">Selecione uma disciplina</option>
<option th:each="disciplina : ${listaDisciplinas}" th:value="${disciplina.codigo}" th:text="${disciplina.nome}" />
</select>
</div>
<div class="row">
<label for="data" class="active">Data</label>
<input name="data" class="validate" th:field="*{pk.data}" id="data">
</div>
<div class="row">
<label for="presenca" class="active">Presença</label>
<input name="presenca" class="validate" th:field="*{presenca}" id="presenca">
</div>
The text inputs are showing up, but these two comboboxes aren't - since "Aluno" and "Disciplina" are not simple attributes of "Faltas", unlike "data" and "presenca" attributes, for example.