在JSP页面

时间:2017-07-01 17:07:54

标签: java html spring jsp spring-mvc

我尝试使用Spring MVC进行Web应用程序,当我尝试使用对象信息填充JSP页面时,我遇到了困难:

我有一个Pessoa课(" Person"):

@Entity
public class Pessoa {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int idPessoa;
    private String nome;
    private int rg;
    private TipoEstado rgEstado;
    private int cpf;
    @DateTimeFormat
    private Calendar dataNascimento;
    private String profissao;
    private String nomePai;
    private String nomeMae;
    private TipoEstadoCivil estadoCivil; //enum
    private TipoSituacao situacao; 

    @OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name="idEndereco")
    private Endereco endereco;

    @OneToMany(mappedBy = "pessoa", targetEntity = ContaCorretora.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<ContaCorretora> contaCorretora;

    @OneToMany(mappedBy = "pessoa", targetEntity = Telefone.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<Telefone> telefone;

    @OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name="idContaBancaria")
    private ContaBancaria contaBancaria;

    @OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name="email")
    private Usuario usuario;

控制器方法:

@RequestMapping("/listarPessoa/{id}") 
public ModelAndView listarPessoa(@PathVariable("id") int id) {
    ModelAndView modelAndView = new ModelAndView("pessoa/listaespecifica");
    Pessoa pessoa = pessoaDao.find(id);
    modelAndView.addObject("pessoa",pessoa);
    return modelAndView;
}

PessoaDAO方法:

public Pessoa find(int id) {        
    return manager.createQuery("select p from Pessoa as p where p.idPessoa = :id", Pessoa.class)
            .setParameter("id", id).getSingleResult();
}

主要问题是,当attribut有关系时,我无法在.JSP页面中显示信息。当我把属性没有关系时,它工作正常!

例如:

以上代码有效:

<tr>
    <td><b>RG</b></td>
    <td>${pessoa.rg }</td>
</tr>

当我把这样的代码放在一起时,不起作用:(&#34; Endereco&#34;就像&#34;地址&#34;,在这种情况下是与pessoa的OnetoOne关系,&# 34; logradouro&#34;是Endereco的一个属性&#34;。然后,上面的代码不起作用:

<tr>
    <td><b>Endereco</b></td>
    <td>${pessoa.endereco.logradouro }</td>
</tr>

这是错误:

**type Exception report
message An exception occurred processing JSP page /WEB-INF/views/pessoa/listaespecifica.jsp at line 69
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /WEB-INF/views/pessoa/listaespecifica.jsp at line 69
66:     </tr>
67:     <tr>
68:             <td><b>Endereco</b></td>
69:             <td>${pessoa.endereco.logradouro }</td>
70: 
71: 
72:     </tr>**

1 个答案:

答案 0 :(得分:0)

将Endereco endereco的获取类型更改为渴望。喜欢这个

@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.EAGER)
@JoinColumn(name="idEndereco")
private Endereco endereco;