Vraptor - Formulário de cadastro com combobox

5 respostas
K

A questão é simples:

Tenho uma tela que persiste uma entidade do banco. Entidade Veiculo. (hibernate).
Essa entidade tem dependência para outra entidade. Entidade Marca (previamente cadastrada).

Quando preenchidos os dados, se o usuário preencher uma marca para o veiculo, na requisição posso mandar:
veiculo.descricao
veiculo.marca.idMarca

No controller, recebo um objeto Veiculo, que vai estar com os atributos descricao e marca preenchidos… marca vai ter só o id.
Nesse caso, na hora de persistir não há problema algum pois o hibernate consegue referenciar a marca só pelo id.

A questão é que quando o usuário não seleciona nenhuma marca, o vRaptor vai instanciar da mesma maneira o objeto marca e setar no objeto veiculo,
mas por não ser null, vai dar erro de persistência.

Se o objeto estiver nulo, daí não tem problema…

Como resolvo essa zica?

5 Respostas

K

Lembrando que não quero ficar setando esse cara pra null toda… isso sei que resolveria.

Queria que de alguma forma mais prática o vRaptor não instanciasse esse objeto dependente, quando não foi selecionado pelo usuário.

Lucas_Cavalcanti

cria esse filtro:

e registre-o antes do filtro do vraptor.

K

Lucas,

O filtro deu certo em partes…
O objeto está ficando nulo quando nada é selecionado no combo, porém quando um valor é selecionado ele não está conseguindo setar o id da entidade.
Na requisição está vindo:
veiculo.marca.id = 20

No controller eu recebo um objeto Veiculo.

O único detalhe é que esse id é estendido de outra entidade:
Veiculo extends EntidadeBase
Marca extends EntidadeBase
e a EntidadeBase tem o atributo id.
Nesse caso, O vraptor consegue injeta-lo?

Fui claro?

(nomes das entidades meramente ilustrativos)

Lucas_Cavalcanti

deveria conseguir, se tiver getter e setter.

fredericomaia10

Valeu Lucas. Funcionou fácil aqui.

Criado 9 de novembro de 2012
Ultima resposta 15 de abr. de 2013
Respostas 5
Participantes 3