【发布时间】: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