Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在thymeleaf中使用列表来使用输入类型?_Java_Spring Mvc_Spring Boot_Spring Data_Thymeleaf - Fatal编程技术网

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

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

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

我创建了一个名为PessoaPerson的类和另一个名为Endereço Address的类

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