【问题标题】:The server encountered an internal error that prevented it from fulfilling this request服务器遇到了一个内部错误,导致它无法完成这个请求
【发布时间】:2017-07-01 02:07:00
【问题描述】:

我正在使用 Spring MVC 做一个应用程序,当我尝试在我的应用程序中为特定人员注册银行帐户时遇到问题。在这种情况下,一个人有多个帐户:

这种关系有两个类:

总结:

@Entity
public class Pessoa {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int idPessoa;

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


@Entity
public class ContaCorretora {
    @Id @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int idConta;
    private TipoConta tipoConta;
    private TipoRisco tipoRisco;
    private String login;
    private String senha;
    private BigDecimal valorAtual;
     @ManyToOne
     @JoinColumn(name="idPessoa")
     private Pessoa pessoa;

控制器类:

@RequestMapping("/pessoa")
@Controller
public class ContaCorretoraController {


    @Autowired
    private ContaCorretoraDAO contaCorretoraDao;

    @Autowired
    private PessoaDAO pessoaDao;

    @RequestMapping("/pessoacorretora/{id}") 
    public ModelAndView pessoaCorretora(@PathVariable("id") int id, ContaCorretora contaCorretora ) {
        contaCorretora = new ContaCorretora();
        Map<String, Object> model = new HashMap<String, Object>();
        Pessoa pessoa = pessoaDao.find(id);
        model.put("contaCorretora", contaCorretora);
        model.put("pessoa", pessoa);
        model.put("tipoConta", TipoConta.values());
        model.put("tipoRisco", TipoRisco.values());
        return new ModelAndView("pessoa/contacorretora", "model", model);       
    }


    @RequestMapping(value="/pessoacorretora/finalizar", method=RequestMethod.POST) 
    public ModelAndView gravar(ContaCorretora contaCorretora)   {       
        contaCorretoraDao.gravar(contaCorretora);
        return new ModelAndView("redirect:pessoa/contacorretora"); 
    }

我真的不知道控制器类是否正确,但问题可能就在那里。不过,我也会粘贴 JSP 代码:

<form:form action="${s:mvcUrl('CCC#gravar').build() }" method="post" commandName="pessoa" enctype="multipart/form-data" >


    <div class="form-group" >
        <label>Conta</label>
        <select name="tipoConta">
            <c:forEach items="${model.tipoConta}" var="tipoConta">
                  <option value=${tipoConta}>${tipoConta}</option>
            </c:forEach>
        </select>
    </div>

    <div class="form-group" >
        <label>Risco</label>
        <select name="tipoRisco">
            <c:forEach items="${model.tipoRisco}" var="tipoRisco">
                  <option value=${tipoRisco}>${tipoRisco}</option>
            </c:forEach>
        </select>
    </div>

            <div class="form-group">
        <label>Login</label>
        <form:input path="login" cssClass="form-control" /> 

    </div>

    <div class="form-group">
        <label>Senha</label>
        <form:input path="senha" cssClass="form-control" /> 

    </div>

    <div class="form-group">
        <label>Valor Atual</label>
        <form:input path="valorAtual" cssClass="form-control" /> 

    </div>  



        <button type="submit" class="btn btn-primary">Cadastrar</button>
</form:form>

当我尝试打开网站时 (..../pessoa/pessoacorretora/6) - 6 是有效 ID,这是错误:

HTTP 状态 500 - java.lang.IllegalStateException:Bean 名称“pessoa”的 BindingResult 和普通目标对象都不能用作请求属性 类型异常报告 消息 java.lang.IllegalStateException:Bean 名称“pessoa”的 BindingResult 和普通目标对象都不能用作请求属性 描述服务器遇到了一个内部错误,导致它无法完成这个请求。

实际上,当我想做 CRUD 操作时,我真的不知道如何处理两个类的关系。

【问题讨论】:

    标签: java spring hibernate jsp jpa


    【解决方案1】:

    问题是spring无法在你的JSP表单中绑定commandName="pessoa"

    你确定Pessoa返回的值是:

        Pessoa pessoa = pessoaDao.find(id); // is not Null ??
    

    试试这个作为测试:

        model.put("pessoa", pessoa == null ? new Pessoa() : pessoa );
    

    解决此问题的另一种方法是通过控制器上的模型属性注释添加它:

    @ModelAttribute("pessoa ")
    public Pessoa defaultInstance() {
        return new Pessoa();
    }
    

    【讨论】:

    • 哦,原来是Ctrl+c Ctrl+V的问题!我更改了 commandName 并且它有效!谢谢!
    猜你喜欢
    • 2016-01-24
    • 2016-08-29
    • 2012-04-18
    • 2015-09-21
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多