Java 如何在thymeleaf中使用列表来使用输入类型?
我真的不知道如何使用springmvc和Thymeleaf在表单中使用对象列表。如果对象的属性不是列表,我知道如何编码输入类型,但使用列表我认为我需要编写不同的代码 我创建了一个名为PessoaPerson的类和另一个名为Endereço Address的类Java 如何在thymeleaf中使用列表来使用输入类型?,java,spring-mvc,spring-boot,spring-data,thymeleaf,Java,Spring Mvc,Spring Boot,Spring Data,Thymeleaf,我真的不知道如何使用springmvc和Thymeleaf在表单中使用对象列表。如果对象的属性不是列表,我知道如何编码输入类型,但使用列表我认为我需要编写不同的代码 我创建了一个名为PessoaPerson的类和另一个名为Endereço Address的类 @Entity public class Pessoa { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private int idPessoa; @N
@Entity
public class Pessoa {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private int idPessoa;
@NotEmpty(message = "Nome da pessoa é obrigatório")
private String nome;
private String rg;
@Enumerated(EnumType.STRING)
private TipoEstado rgEstado;
private String cpf;
@DateTimeFormat(pattern="dd/MM/yyyy")
@Temporal(TemporalType.DATE)
private Date dataNascimento;
private String profissao;
private String nomePai;
private String nomeMae;
@Enumerated(EnumType.STRING)
private TipoEstadoCivil estadoCivil; //enum
private String obs;
@OneToMany(mappedBy = "pessoa", targetEntity = Endereco.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private List<Endereco> endereco;
@Entity
public class Endereco {
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
private Long idEndereco;
private String logradouro;
private String numero;
private String complemento;
private String bairro;
private String cep;
@Enumerated(EnumType.STRING)
private TipoEstado estado;
@Enumerated(EnumType.STRING)
private TipoEndereco tipoEndereco;
private String cidade;
private String pais;
@ManyToOne
@JoinColumn(name="idPessoa")
private Pessoa pessoa;
我在这两个类中都实现了getter和setter
我的问题是当我想在endereço字段中输入时
例如,当我输入名称时,上面的代码起作用:
<div class="form-group" th:classappend="${#fields.hasErrors('nome')} ? has-error">
<label for="nome" class="col-sm-2 control-label">Nome</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="nome" th:field="*{nome}" />
</div>
</div>
您可以按如下方式通过thymeleaf进行表单选择:
@RequestMapping("/novo")
public ModelAndView novo() {
ModelAndView mv = new ModelAndView(CADASTRO_VIEW);
mv.addObject(new Pessoa());
return mv;
}
<div class="form-group">
<label class="col-sm-2 control-label">Endereco </label>
<div class="col-sm-4">
<select th:field="*{endereco}">
<option th:each="e: ${endereco}"
th:value="${e.enderecoId}"
th:text="${e.logradouro} + ', ' + ${e.numero}"/>
</select>
</div>
</div>
发布OP的解决方案摘自上述评论:
抱歉,可能我不清楚,我想在表单中输入Endedeco值,我使用了此解决方案,效果很好:
你的意思是使用类似select元素的东西吗?是的,这是可能的,我可以使用select元素来知道用户有多少个地址,然后他插入所有可能的地址,但实际上我不知道如何开始抱歉,可能我不清楚,我想在表单中输入Endedeco值,我使用了这个解决方案,效果很好:Logradouro
<div class="form-group">
<label class="col-sm-2 control-label">Endereco </label>
<div class="col-sm-4">
<select th:field="*{endereco}">
<option th:each="e: ${endereco}"
th:value="${e.enderecoId}"
th:text="${e.logradouro} + ', ' + ${e.numero}"/>
</select>
</div>
</div>
<div class="form-group">
<label for="logradouro" class="col-sm-2 control-label">Logradouro</label>
<div class="col-sm-4">
<input type="text" class="form-control" id="logradouro" th:field="*{endereco[0].logradouro}" />
</div>
</div>