Pessoal, boa tarde!
Minha situação é a seguinte, vou desenvolver um sistema com extJS, vraptor e JPA. To desenvolvendo um form smiples para ir me acostumando com as tencologias e aumentando a complexidade aos poucos. Minha dúvida é a seguinte: eu tenho um formulário para cadastro de pessoas que é uma entidade JPA do meu sistema. Tenho um combobox preenchido direto do banco com profissões que é outra entidade. Pessoa, se liga com profissão atráves de um relacionamento @ManyToOne. Ate ai tudo lindo. O problema é qua quandp eu escolho a profissão no combo, o máximo que eu posso pegar é um atributo da profissão, no caso o nome e não da pra setar isso no atributo Profissão da pessoa, pq o método set espera um objeto. Como posso resolver isso? Seguem abaixo os arquivos:
form.js
Ext.onReady(function() {
/*-----------Objetos que compõem o formulário--------------------*/
var campoNome = {
xtype : 'textfield',
fieldLabel : 'Nome',
name : 'pessoa.nome',
allowBlank : false
};
var campoIdade = {
xtype : 'textfield',
fieldLabel : 'Idade',
name : 'pessoa.idade'
};
var campoData = {
xtype : 'datefield',
fieldLabel : 'Data de Nascimento',
name : 'pessoa.dataNascimento'
};
var campoEndereco = {
xtype : 'textfield',
fieldLabel : 'Endereço',
name : 'pessoa.endereco'
};
var campoTelefone = {
xtype : 'textfield',
fieldLabel : 'Telefone',
name : 'pessoa.telefone',
vtype : 'alphanum'
};
var radioGroupSexo = {
xtype : 'radiogroup',
columns : 1,
fieldLabel : 'Sexo',
name : 'pessoa.sexo',
items : [{
name : 'pessoa.sexo',
boxLabel : 'Masculino',
inputValue : 'MASCULINO'
}, {
name : 'pessoa.sexo',
boxLabel : 'Feminino',
inputValue : 'FEMININO'
}
]
};
/*
* Variável responsável por carregar os dados do Banco para preencher o
* ComboBox de profissões.
*/
var profissoesStore = new Ext.data.Store({
reader : new Ext.data.JsonReader({
fields : ['id', 'nome'],
root : 'list'
}),
proxy : new Ext.data.HttpProxy({
url : '/vraptorextjs/pessoas/json/listaProfissoes.json'
}),
autoLoad : true
});
var comboProfissao = {
xtype : 'combo',
hiddenName : 'pessoa.profissao',
fieldLabel : 'Profissão',
mode : 'local',
store : profissoesStore,
displayField : 'nome',
valueField : 'id',
width : 120
};
var editorDescricao = {
xtype : 'htmleditor',
fieldLabel : 'Fale Sobre você',
name : 'pessoa.faleSobreVoce',
hiddeLabel : true,
height : 100,
achor : '100%'
};
/*-------------Botões do Formulário-------------------------*/
var botaoSalvar = {
text : 'Salvar',
handler : function() {
form.getForm().submit();
}
};
/*---------------Variável que monta o formulário------------*/
var form = new Ext.FormPanel({
url : '/vraptorextjs/pessoas',
renderTo : Ext.getBody(),
frame : true,
title : 'Cadastro de Funcionário',
width : 600,
items : [campoNome, campoIdade, campoData, campoEndereco,
campoTelefone, radioGroupSexo, comboProfissao,
editorDescricao],
buttons : [botaoSalvar]
});
});
Pessoa
[code]
package br.com.lds.vraptor.entity;
import java.util.Date;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import br.com.lds.vraptor.enums.Sexo;
@Entity
public class Pessoa {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Date dataNascimento;
private String endereco;
private String telefone;
@Enumerated(EnumType.STRING)
private Sexo sexo;
private String hobby;
@ManyToOne
@JoinColumn(name = "profissao_id")
private Profissao profissao;
private String faleSobreVoce;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Date getDataNascimento() {
return dataNascimento;
}
public void setDataNascimento(Date dataNascimento) {
this.dataNascimento = dataNascimento;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getTelefone() {
return telefone;
}
public void setTelefone(String telefone) {
this.telefone = telefone;
}
public Sexo getSexo() {
return sexo;
}
public void setSexo(Sexo sexo) {
this.sexo = sexo;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
public Profissao getProfissao() {
return profissao;
}
public void setProfissao(Profissao profissao) {
this.profissao = profissao;
}
public String getFaleSobreVoce() {
return faleSobreVoce;
}
public void setFaleSobreVoce(String faleSobreVoce) {
this.faleSobreVoce = faleSobreVoce;
}
}[/code]
Profissao
[code]
package br.com.lds.vraptor.entity;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class Profissao {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String nome;
private Double salario;
private Integer cargaHoraria;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Double getSalario() {
return salario;
}
public void setSalario(Double salario) {
this.salario = salario;
}
public Integer getCargaHoraria() {
return cargaHoraria;
}
public void setCargaHoraria(Integer cargaHoraria) {
this.cargaHoraria = cargaHoraria;
}
}[/code]