java - 如何在 thymeleaf 中使用列表来使用输入类型?

标签 java spring-mvc spring-boot spring-data thymeleaf

我真的不知道如何使用 Spring MVC 和 Thymeleaf 在表单中使用对象列表。如果对象的属性不是列表,我知道如何编写输入类型,但使用列表我认为我需要编写不同的代码。

我创建了一个名为“Pessoa”(人)的类和另一个名为“Endereço”(地址)的类

@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;

Endereço(地址)

@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”字段中进行输入时

例如,当我输入“name”时,上面的代码有效:

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

我尝试对 Endereco(地址)做同样的事情,它是一个地址列表。例如:

            <div class="form-group">
                <label for="nome" class="col-sm-2 control-label">Logradouro</label>
                    <div class="col-sm-4">
                        <input type="text" class="form-control" id="logradouro" th:field="*{endereco.logradouro}" />
                    </div>
            </div>

我意识到属性“nome”是来自 Pessoa 的一个简单字符串,但属性“endereco”是 Endereco 的列表,也插入到 Pessoa 类中。也许我需要使用列表编写不同的代码,但我真的不知道什么时候开始。

我不知道 Controller 中的显示方法是否重要,但就像这样:

@RequestMapping("/novo")
public ModelAndView novo() {

    ModelAndView mv = new ModelAndView(CADASTRO_VIEW);

    mv.addObject(new Pessoa());
    return mv;
}

最佳答案

发布OP的解决方案(取自上面的评论):

Sorry, probably i wasnt clear, I want to input the "endendeco" values in a form, I've use this solution and works well:

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

关于java - 如何在 thymeleaf 中使用列表来使用输入类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45341089/

相关文章:

java - 方法 isEmpty() 未针对类型 Optional 定义

java - 使用 Spring MVC 流式传输可关闭资源

java - Spring Boot Jackson ResponseEntity 找不到类的序列化器

java - 如何设置系统变量以用于 Maven 故障安全测试?

java - 执行 get 时 Room DB 正在更改项目的顺序

java - 如何在jsp上显示带有某些对象的嵌套树

spring-mvc - Spring Boot 中的 WebMvcConfigurationSupport 替换是什么?

maven - Camel Spring Boot Maven到Gradle

java - jSlider 转到点击位置 - 仅在 Macintosh 上出现问题

java - 调整数组大小